根据我的目的,我只想让我的进程在后台运行。然后我可以编写正常程序并使用以下命令运行它: nohup myprogram 1> 2 2> / dev / null&
然后这个程序将在后台运行,就像守护进程一样。
通过这种方式,我不需要调用fork()来在后台运行。 所以我的问题是在使用fork()函数?
之间使用上面的命令在后台运行程序有什么区别答案 0 :(得分:1)
TL; DR不需要fork()
调用,它只是为程序用户提供了一个很好的用户界面。
守护程序使用fork()
创建它的副本。然后子进程继续运行(在后台)。父进程可能会产生一些输出(状态)然后退出。
当然,您只能编写程序的子部分,并使用您发布的命令行启动它:
$ nohup myprogram 1>2 2>/dev/null &
但如果你编写守护进程和我必须使用它,我当然更喜欢使用更简单的命令行,而不需要所有脚手架来放置程序背景并确保其输出不会停止等等:
$ myprogram # there is no need for anything else