C 通过在另一个控制台中再次执行来结束后台进程,如何完成?

C 通过在另一个控制台中再次执行来结束后台进程,如何完成?,c,ipc,daemon,C,Ipc,Daemon,我有一个C语言的程序,需要在后台运行。它模仿您可以在OSX上找到的smartfolder 我被要求通过在控制台中第二次编写它的执行命令来终止它 我想保存pid并使用第二个程序来监视输入,但我没有找到将输入发送到后台进程的方法 我尝试过使用pipe,后台程序正在从中读取数据,但输入却无法进入 有人能告诉我这是否可能,这是否是正确的方法吗?这也适用于守护进程吗?如果您将PID保存在某个文件中,那么运行它怎么样 kill(pid, SIGTERM); 如果在处理时需要进行特殊清理(例如删除存储PID

我有一个C语言的程序,需要在后台运行。它模仿您可以在OSX上找到的smartfolder

我被要求通过在控制台中第二次编写它的执行命令来终止它

我想保存pid并使用第二个程序来监视输入,但我没有找到将输入发送到后台进程的方法

我尝试过使用pipe,后台程序正在从中读取数据,但输入却无法进入


有人能告诉我这是否可能,这是否是正确的方法吗?这也适用于守护进程吗?

如果您将PID保存在某个文件中,那么运行它怎么样

kill(pid, SIGTERM);
如果在处理时需要进行特殊清理(例如删除存储PID的文件),请为术语信号实现一个处理程序(请参阅
signal
函数)


或者,您可以使用一个用户信号,例如,
SIGUSR1

我很快就能让它工作,只是我的kill函数不工作,但我有smartfolder进程的PID

我做了以下操作:如果程序使用超过1个参数执行,它将运行smartfolder,并将其pid保存到一个文件中

如果它只有一个参数,它将读取与smartfolder目录名相同的txt文件,以查找PID并发送终止信号


这样,当我只使用1个参数输入execution命令时,它将终止相应的进程

水管怎么了?你可以尝试使用套接字,无论如何,套接字应该可以工作。假设“kill”是“end”的意思,那么是的,有多种可能。信号和/或管道绝对是可行的方式。是的,我的意思是结束,即使这个过程是一个执事也有可能吗?是的。一个“守护进程”首先是。。。好的,只是另一个进程正在运行。搜索谢谢。我需要将pid与smartfolder的名称匹配。这就是为什么我需要第二道工序。我会将pid和smartfolder的名称保存在一个文件中,我将在第二个进程中读取该文件,如果它在stdin中看到匹配的名称,则需要结束匹配进程。我可以在没有管理员权限的情况下从deamon内部将stdin重定向到管道吗?@Ashuiegi我不确定我是否理解:您可以同时有多个进程,每个进程对应一个不同的目录?确切地说,通过在控制台中键入。/smartfolder/foldername/它应该结束相应的守护进程。您有一个正在搜索的文件夹和一个符号链接所在的文件夹。