欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

function函數daemon的作用

老白2年前16瀏覽0評論

function函數daemon的作用?

linux提供了daemon函數用于創建守護進程,實現原理與上文中介紹的是一樣的。

#include

int daemon(int nochdir, int noclose);

1. daemon()函數主要用于希望脫離控制臺,以守護進程形式在后臺運行的程序。

2. 當nochdir為0時,daemon將更改進城的根目錄為root(“/”)。

3. 當noclose為0是,daemon將進城的STDIN, STDOUT, STDERR都重定向到/dev/null。

daemon的實現大致如下:

int daemon( int nochdir, int noclose )

{

pid_t pid;

if ( !nochdir && chdir("/") != 0 ) //如果nochdir=0,那么改變到"/"根目錄

return -1;

if ( !noclose ) //如果沒有noclose標志

{

int fd = open("/dev/null", O_RDWR);

if ( fd < 0 )

return -1;

/* 重定向標準輸入、輸出、錯誤 到/dev/null,

鍵盤的輸入將對進程無任何影響,進程的輸出也不會輸出到終端

*/

dup(fd, 0);

dup(fd, 1);

dup(fd, 2);

close(fd);

}

pid = fork(); //創建子進程.

if (pid < 0) //失敗

return -1;

if (pid > 0)

_exit(0); //返回執行的是父進程,那么父進程退出,讓子進程變成真正的孤兒進程.

//創建的 daemon子進程執行到這里了

if ( setsid() < 0 ) //創建新的會話,并使得子進程成為新會話的領頭進程

return -1;

return 0; //成功創建daemon子進程

}

使用實例:

int main()

{

daemon(1, 1); //參數根據需求確定

/* 在這里添加你需要在后臺做的工作代碼 */

}

如何殺死這樣的進程:

通過ps+grep找到對應的后臺進程,使用kill命令將進程殺死;也可創建shell腳本對進程的啟動、關閉、重啟進行自動管理

kill java進程,function函數daemon的作用