我已经在后台启动了我的进程,我想使用popen()使用C程序杀死该进程。
我在很多方面尝试过,但徒劳无功。原因是当我运行C代码时,它在子shell中执行,因此我无法在主shell中运行进程。
我用过$!获取最新的pid在后台运行,但由于上述原因,它无效。
答案 0 :(得分:1)
my_process & pids="${pids-} $!" //start my process
sleep 10 // run for 10 seconds
kill -2 $pids //kill the process
此外,您可以将PID存储在文件中并将其删除。像
./process1.sh &
echo $! > /tmp/process1.pid
kill -9 `cat /tmp/process*.pid`
rm /tmp/process*.pid
答案 1 :(得分:1)
您应该将您的流程变为daemon,这样您就可以开始,结束并重新启动它而不会出现问题。
答案 2 :(得分:0)
+1
另一种选择(因为有很多方法可以做)如果你有root,你也可以创建它作为服务,然后启动它并使用“service”命令手动停止它。
(抱歉想把评论添加到Raydel's但是我的代表显然不够高,所以添加作为一个单独的答案)