#include <stdio.h>
#include <unistd.h>
//#include <signal.h>
int main(int argc, char *const *argv)
{
pid_t pid;
//系统函数,设置某个信号来的时候处理程序(用哪个函数处理)
//signal(SIGHUP,SIG_IGN); //SIG_IGN标志:我要求忽略这个信号,请操作系统不要用缺省的处理方式来对待我(不要把我杀掉);
//fork调用一次会返回两个值,其中在子进程中返回0,在父进程中返回子进程的pid号。
pid = fork(); //系统函数,用来创建新进程。子进程会从fork()调用之后开始执行
if(pid < 0)
{
printf("fork()进程出错!\n");
}
else if(pid == 0)
{
//子进程这个条件会满足
printf("子进程 pid=%d开始执行!\n",pid);
//如果没有setsid() 这句,当父进程被kill,子进程也被kill
//设置一个新的session Id
setsid(); //新建立一个不同的session,但是如果进程组组长调用setsid()是无效的
for(;;)
{
sleep(1); //休息1秒
printf("子进程休息1秒\n");
}
return 0;
}
else
{
printf("父进程 pid=%d 继续执行!\n",pid);
//父进程会走到这里
for(;;)
{
sleep(1); //休息1秒
printf("父进程休息1秒\n");
}
return 0;
}
//for(;;)
//{
// sleep(1); //休息1秒
// printf("休息1秒\n");
//}
printf("程序退出,再见!\n");
return 0;
}