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

Why should I use fork() to daemonize my process?

本文关键字:守护我 守护 我的 进程 我应该 fork 为什么      更新时间:2023-10-16

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

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

这样,我就不需要调用 fork(( 在后台运行。 所以我的问题是使用 fork(( 函数在后台使用上述命令运行程序有什么区别?

TL;DR 不需要fork()调用,它只是有助于为程序用户提供一个漂亮的 UI。

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

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

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

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

$ myprogram        # there is no need for anything else