nmd*_*_07 3 linux daemon process background-process server
后台进程不属于用户和终端,守护进程也不属于用户和终端。两者之间的主要区别是什么?如果我要编写一个服务器程序,我应该将其作为后台进程还是守护进程运行?
小智 5
后台进程通常是指以下进程:
\nAnother process is its parent; eg, a shell;\nIt has standard streams (input, output, error) connected to that parent\n
Run Code Online (Sandbox Code Playgroud)\n最常见的类型是当您运行带有尾随 & 的 shell 程序时。它通常共享 shell\xe2\x80\x99s 输出流,但如果它尝试从输入流中读取,则会收到信号并停止。
\n更重要的是(通常),像这样的后台进程仍然是父进程,因此发送给该进程组的信号将继续它。如果父进程终止,子进程也将收到很可能终止它们的信号。(对于大多数用户来说,这可能是两者之间最大的区别。)
\n守护进程是这样的进程:
\nHas no parent, ie, its parent process is the system (or container) initial thread, commonly systemd (Linux), init (other Unix), or launchd? (MacOS);\nTypically has its output disconnected, or connected to a log file;\nTypically has its input disconnected.\n
Run Code Online (Sandbox Code Playgroud)\n守护进程通常也被编写为接受\xe2\x80\x9cuser挂起\xe2\x80\x9d信号(SIGHUP),如果不处理该信号将终止程序,作为重新读取其配置文件并继续工作的特殊指令。
\n大多数情况下,这些进程是由某些系统级设施创建的,完全独立于用户活动(登录、注销等)继续运行。本身处理登录的事物(getty 或 gdm 等)以及其他面向网络的服务(Web 服务器、邮件服务器等)可能是守护进程,以及像 cron 或 smartd 这样的自我监控服务。
\n 归档时间: |
|
查看次数: |
4446 次 |
最近记录: |