【问题标题】:How to start a process as running in background?如何启动一个在后台运行的进程?
【发布时间】:2015-09-14 05:36:45
【问题描述】:

我已经完成了fork,然后是exec,但我不知道如何在后台启动它。

我应该在exec 之后使用参数吗?如果有,是哪一个?

【问题讨论】:

标签: c linux daemon background-process system-calls


【解决方案1】:

如果您只想让进程后台运行,请使用daemon()

如果您想生成一个进程,然后将其自身设置为背景,则第一次使用 fork() 并在此第一个子进程中调用 fork() 再次让第二个子进程调用 exec*() 以使进程成为背景。让第一个孩子的初始父母wait()

随着第二个子进程(进程fork()ed 1st)的父进程死亡,exec*()ed 进程将被init 收割。


注意:上述模式有时被称为“双分叉”。也可以在这里查看:Why fork() twice(以及那里的链接)

另一个有趣的答案在这里:Linux: Difference between forking twice and daemon(ise)

【讨论】:

  • @BasileStarynkevitch:胡巴斯勒,多快啊,我正要添加链接... :-) 谢谢!
猜你喜欢
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-14
  • 2018-11-29
  • 1970-01-01
  • 2011-01-23
  • 1970-01-01
相关资源
最近更新 更多