另外参见

fork(2),setsid(2),daemon(7),logrotate(8)

备注

当/ dev / null存在但不是具有预期的主要和次要数字的字符设备时,glibc实现也可以返回-1。在这种情况下,不需要设置errno。

说明

daemon()函数用于希望与控制终端分离并在后台作为系统守护程序运行的程序。

如果nochdir为零,则daemon()将进程的当前工作目录更改为根目录(" /");否则,当前工作目录将保持不变。

如果noclose为零,daemon()会将标准输入,标准输出和标准错误重定向到/ dev / null;否则,将不对这些文件描述符进行任何更改。

名称

daemon-在后台运行的守护程序

语法

#include  

int daemon(int nochdir, int noclose); 

glibc的功能测试宏要求(请参阅feature_test_macros(7)):

daemon():

Since glibc 2.21:
        _DEFAULT_SOURCE
    In glibc 2.19 and 2.20:
        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
    Up to and including glibc 2.19:
        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

BUGS

此函数的GNU C库实现是从BSD提取的,并且没有采用确保生成的守护进程所需的双叉技术(即fork(2),setsid(2),fork(2))。不是会议负责人。相反,生成的守护程序是会话负责人。在遵循System V语义的系统上(例如Linux),这意味着如果守护程序打开了一个终端,该终端尚未是另一个会话的控制终端,则该终端将无意中成为该守护程序的控制终端。

遵循规范

不在POSIX.1中。类似的功能会出现在BSD上。 daemon()函数首先出现在4.4BSD中。

返回值

(此函数进行分叉,如果fork(2)成功,则父级调用_exit(2),以便进一步的错误仅由子级看到。)成功时daemon()返回零。如果发生错误,daemon()返回-1并将errno设置为fork(2)和setsid(2)指定的任何错误。

属性

有关本节中使用的术语的说明,请参见attributes(7)。

InterfaceAttributeValue
daemon()Thread safetyMT-Safe

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

DAEMON - Linux手册页

Linux程序员手册 第3部分
更新日期: 2017-11-26

日期:2019-08-20 18:00:07 来源:oir作者:oir