写一段程序,要求调用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,即控制终端
本文介绍了一个简单的守护进程创建过程,并通过C语言实现了一个具体的例子。该程序使用fork和setsid来创建一个新的会话,使子进程成为进程组长,且不再有控制终端。最后通过调用ps ajx命令查看进程的状态。
297

被折叠的 条评论
为什么被折叠?



