C Fork、父进程和子进程

C Fork、父进程和子进程,c,linux,C,Linux,在C语言中,即使在父进程退出之后,forked()进程也可能无限期地处于活动状态吗 我想做的是,父进程分叉子进程,然后退出,子进程在后台一直运行,直到另一个进程向它发送终止信号。Kerrek是对的,这正是每个守护进程的实现方式。所以,你的想法是完美的。是的,让孩子活下来是绝对可能的。其他响应者也是正确的;这就是“守护进程”或后台进程在Linux环境中运行的方式 有些人称之为“叉子离开,然后死去”的方法。下面是一个链接,介绍如何执行此操作: 请注意,完成的不仅仅是fork()-ing。关闭文件描

在C语言中,即使在父进程退出之后,forked()进程也可能无限期地处于活动状态吗


我想做的是,父进程分叉子进程,然后退出,子进程在后台一直运行,直到另一个进程向它发送终止信号。

Kerrek是对的,这正是每个守护进程的实现方式。所以,你的想法是完美的。

是的,让孩子活下来是绝对可能的。其他响应者也是正确的;这就是“守护进程”或后台进程在Linux环境中运行的方式

有些人称之为“叉子离开,然后死去”的方法。下面是一个链接,介绍如何执行此操作:

请注意,完成的不仅仅是fork()-ing。关闭文件描述符以防止后台进程占用系统资源等。

有一个库函数,非常易于使用。

如果您愿意,调用
守护进程()
函数并非没有限制 编写一个行为良好的守护程序。看见 我需要一个解释


简单地说:一个好的守护进程应该只在准备好输入请求时才进行后台设置,但它是在自己的PID下进行设置并打印启动错误的

这不是每个守护进程都是如何实现的吗?对不起,我不明白你的答案。我是C语言的新手(5个月,我自己),我学习了fork并想尝试一些东西。守护进程是在后台运行的进程,不连接到任何终端。启动守护程序的标准方式正是您描述的方式。@KerrekSB:守护程序不在后台运行。后台和前台(进程组)只与终端相关,而且由于守护进程没有控制终端,它们既不在前台运行,也不在后台运行(任何终端)。@ninjalj:说得好,谢谢。谢谢,对这一点很陌生,但我如何实现呢?我试着把孩子放在一个无限循环中,但它还是结束了太棒了,即使这样也是对的。几乎每个守护进程都会做一些无限的工作,可能主要是睡眠,例如监听套接字(httpd)或等待信号。