#include "common.h"
int main(void)
{
//1.修改权限掩码
umask(0);
//2.创建一个子进程,并且让他成为孤儿进程
if(fork() == 0)
{
//作死的等,直到它爸挂了,然后被init进程领养
while(getppid() != 1);
printf("被领养!\n");
}
else
{
exit(0);
}
//3.创建新的会话,让本进程没有终端
pid = setsid();
//4.更改工作目录
chdir("/");
//5.关闭不再需要的文件描述符
int i;
struct rlimit rlt;
//获取进程当前所能打开的最大文件描述符
getrlimit(RLIMIT_NOFILE, &rlt);
//虽然创建了新的会话,没有终端,但是子进程从父进程继承了0/1/2这三个
//文件描述符,这时候还是可以输出到终端。
//所以我们要把这些文件描述符全部关闭
printf("fileno:%d\n", rlt.rlim_cur);
for(i=0; i<rlt.rlim_cur; i++)
{
close(i);
}
printf("a piece of shit\n");
//6.产生0/1/2这三个文件描述符,让这些文件描述符指向空设备,
//当有输入或者输出的时候不会有任何现象
open("/dev/null", O_RDWR);
open("/dev/null", O_RDWR);
open("/dev/null", O_RDWR);
//下面就是守护进程要做的事情
while(1)
{
printf("fuck you\n");
}
return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。