我在C中有一个程序需要在后台运行。它模仿了你可以在OSX上找到的智能文件夹。
我被要求 kill 通过在控制台中第二次写入它的执行命令来结束它。
我考虑过保存pid并使用第二个程序来监视输入,但我没有找到将输入发送到后台进程的方法。
我尝试过使用烟斗,而后台程序正在读取它,但输入没有进入。
有人可以告诉我它是否可能,以及这是否是正确的方法?这也适用于守护进程吗?
答案 0 :(得分:1)
如果将PID保存在某个文件中,那么只需运行
即可kill(pid, SIGTERM);
如果在处理时需要特殊清理(比如删除存储PID的文件),请为TERM信号实现处理程序(参见signal
函数)。
或者,您可以使用用户信号,例如SIGUSR1
。
答案 1 :(得分:0)
我真的很接近让它工作,只是我的杀戮功能不起作用,但我有智能文件夹过程的PID。
我执行了以下操作:如果程序使用多于1个参数执行,则会运行智能文件夹,将其保存到文件中。
如果它只有一个参数,它会读取与smartfolder目录相同的txt文件,找到PID并发送一个kill信号。
这样当我输入只有1个参数的执行命令时,它将终止相应的进程!