为什么我应该使用fork()来守护我的进程?

时间:2017-07-05 14:35:55

标签: c++ linux daemon

根据我的目的,我只想让我的进程在后台运行。然后我可以编写正常程序并使用以下命令运行它: nohup myprogram 1> 2 2> / dev / null&

然后这个程序将在后台运行,就像守护进程一样。

通过这种方式,我不需要调用fork()来在后台运行。 所以我的问题是在使用fork()函数?

之间使用上面的命令在后台运行程序有什么区别

1 个答案:

答案 0 :(得分:1)

TL; DR不需要fork()调用,它只是为程序用户提供了一个很好的用户界面。

守护程序使用fork()创建它的副本。然后子进程继续运行(在后台)。父进程可能会产生一些输出(状态)然后退出。

当然,您只能编写程序的子部分,并使用您发布的命令行启动它:

$ nohup myprogram 1>2 2>/dev/null &

但如果你编写守护进程和我必须使用它,我当然更喜欢使用更简单的命令行,而不需要所有脚手架来放置程序背景并确保其输出不会停止等等:

$ myprogram        # there is no need for anything else