杀死"后台进程"在Linux中使用C程序

时间:2014-07-01 12:30:00

标签: linux shell process background

我已经在后台启动了我的进程,我想使用popen()使用C程序杀死该进程。

我在很多方面尝试过,但徒劳无功。原因是当我运行C代码时,它在子shell中执行,因此我无法在主shell中运行进程。

我用过$!获取最新的pid在后台运行,但由于上述原因,它无效。

3 个答案:

答案 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,这样您就可以开始,结束并重新启动它而不会出现问题。

您可以从这里开始:Best way to make a shell script daemon?

答案 2 :(得分:0)

关于Raydel回答的

+1

另一种选择(因为有很多方法可以做)如果你有root,你也可以创建它作为服务,然后启动它并使用“service”命令手动停止它。

(抱歉想把评论添加到Raydel's但是我的代表显然不够高,所以添加作为一个单独的答案)