doushi1929 2017-04-12 09:01
浏览 99

使用新的进程组标识golang启动命令

I'm starting a command and storing its PID with the intention of killing it later on. As the process is started with the command creates sub processes, I have to send the kill signal to all process group using

syscall.Kill(-pid, syscall.SIGINT)

This works fine in Linux but not on MacOS. The reason is that, on the mac when command starts it doesn't create it with a different process group, so sending signal to -pid is failing. (If I send the signal to pid, it doesn't kill the child processes)

I tried starting the command with the following flags as well, but it doesn't help on MacOS.

command := exec.Command(commandName, arg...)
command.SysProcAttr = &syscall.SysProcAttr{Setpgid: true, Pgid: 0}

The newly started process gets the group id of the terminal session where the go executable is running instead of new process group id. Is there a way to start a new process group in MacOS?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 Vue3 大型图片数据拖动排序
    • ¥15 划分vlan后不通了
    • ¥15 GDI处理通道视频时总是带有白色锯齿
    • ¥20 用雷电模拟器安装百达屋apk一直闪退
    • ¥15 算能科技20240506咨询(拒绝大模型回答)
    • ¥15 自适应 AR 模型 参数估计Matlab程序
    • ¥100 角动量包络面如何用MATLAB绘制
    • ¥15 merge函数占用内存过大
    • ¥15 使用EMD去噪处理RML2016数据集时候的原理
    • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大