linux的进程学习

wait函数和waitpid函数,函数原型: pid_t wait(int *status )

status是一个整型指针,指向的对象用来保护子进程退出时的状态。例如: pid = wait(&status)

 

这status假设为 0x0400,说明 第一个字节保存的是中断信号的编号,倒数第二个字节是保存exit()中的数字。

函数的返回值成功返回的是子进程的进程号,失败返回-1;

调用wait函数的意义是使进程阻塞,直到任意一个子进程结束或者是该进程直接收到一个信号为止。如果该进程没有

子进程或者其子进程已经结束,wait函数会立即返回。

waitpid(pid_t pid,int * status,int options)

waitpid函数和wait函数类似,waitpid函数可以指定等待某个子进程

pid = -1,等待任意子进程;=0,等待本组ID中的子进程;《-1,其他组子进程

options:WNOHONG 若pid指定的进程并不立即可用,则waitpid不阻塞,此时返回值为0

     WUNTRACED

      0,等同wait

 

 

 

Linux守护进程,也就是通常说的Daemon进程,是Linux中断后台服务进程它是一个长期生存的进程,通常独立于控制终端

并且周期性的执行某种任务或等待处理某些发生的事件。

守护进程常常在系统启动时候开始运行,在系统关闭时候才终止。

linux守护进程的编写步骤:

1.创建子进程,父进程退出

2.在子进程中创建新的会话

3.改变当前目录为根目录

4.重置文件权限掩码

5.关闭文件描述符。

 

1.pid = fork()

if(pid >0)

{

  exit(0);

}

setsid();//用于创建一个新的会话,并使得当前的进程成为新会话组的组长,是进程完全独立出来,从而脱离其他进程的控制

chdir("/");//在进程运行过程中,当前目录所在的文件系统是不能卸载的

unmask(0);//设置文件权限为0,可以增加守护进程的灵活性

fdablesize = getdtablesize();

for(fd = 0;fd< fdtablesize;fd++)

close(fd);

结束!

 

 

 

 

 

 

 

 

 

posted on 2012-06-28 22:52  孟浩依然  阅读(324)  评论(0编辑  收藏  举报