写一段程序,要求调用fork并在子进程中建立一个新的对话期。验证子进程变成了进程组长而且不再有控制终端。
首先看一下守护进程,和这个差不多
#include<stdio.h>
#include<errno.h>
#include<unistd.h>
#include<stdlib.h>
int daemon_init(void)
{
char c;
pid_t pid;
if((pid=fork())<0)return (-1);
else if(pid!=0)exit(0);
setsid();
printf("pid=%ld,pgrp=%ld,sid=%ld\n",(long)getpid(),(long)getpgrp(),(long)getpgrp());
return (0);
}
int main(void)
{
daemon_init();
if(execlp("ps","ps","ajx",(char*)0)<0){
printf("execlp error");
exit(1);
}
exit(0);
}
运行结果
第四行为tty,即控制终端