Chinaunix首页 | 论坛 | 博客
  • 博客访问: 333799
  • 博文数量: 124
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 321
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-04 16:09
文章分类

全部博文(124)

文章存档

2014年(124)

分类: 嵌入式

2014-08-14 13:47:31

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);

阅读(1554) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~