#include
#include
#include
#include
#include
int main(int argc, char *argv[])
{
//1、创建子进程,父进程退出
pid_t pid = fork();
if (pid < 0)
{
perror("fork");
return -1;
}
if (pid > 0)
exit(0);
//2、创建新会话
if (0 > setsid())
{
perror("setsid");
return -1;
}
//3、改变当前工作目录为根目录
chdir("/tmp");
//4、重设文件权限掩码
umask(0);
//5、关闭所有的文件描述符
int i;
int nfiles = getdtablesize();//获取所有的文件描述符个数
for (i = 0; i < nfiles; i++)
close(i);
while (1)
{
printf("hello world\n"); //不会打印到终端,因为stdout被关闭了
sleep(1);
}
return 0;
}