waitpid函数实例

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<sys/types.h>
 4 #include<sys/wait.h>
 5 #include<unistd.h>
 6 int main(void)
 7 {
 8     pid_t pc,pr;
 9     if((pc=fork())==-1)
10     {
11         printf("failed to create a new process\n");
12         exit(0);
13     }
14     else if(pc==0)
15     {
16         sleep(10);
17         exit(0);
18     }
19
20
21     do {
22         pr=waitpid(pc,NULL,WNOHANG);
23         if(pr==0)
24         {
25             printf("No child exited\n");
26             sleep(1);
27         }
28     }while(pr==0);
29
30     if(pr==pc)
31     {
32         printf("successfully get child %d\n",pr);
33     }
34     else
35     {
36         printf("some error occured\n");
37     }
38     return 0;
39 }
时间: 2024-10-12 05:50:43

waitpid函数实例的相关文章

UNIX环境编程学习笔记(21)——进程管理之获取进程终止状态的 wait 和 waitpid 函数

lienhua342014-10-12 当一个进程正常或者异常终止时,内核就向其父进程发送 SIGCHLD信号.父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用的函数(信号处理程序).对于这种信号的系统默认动作是忽略它. 在文档“进程控制三部曲”中,我们讲的第三部曲是使用 wait 函数来获取终止子进程的终止状态.那么,有几个问题我们这里需要详细的学习一下. 1. 父进程一定能够获取到子进程的终止状态吗?如果子进程在父进程调用 wait 函数前就终止了,怎么办? 2. 如果父进程没有获

waitpid 函数详解

关于Linux中waitpid函数的一些使用说明: #include<sys/types.h> #include<sys/wait.h> 定义函数 pid_t waitpid(pid_t pid,int * status,int options); waitpid函数有三个参数:pid和指向返回状态所在单元的指针和一个用来指定可选项的标识符.如果pid为-1 ,waitpid就等待任何一个子进程,如果pid>0 j就是等待pid指定的那个进程结束,参数pid还存在另外的两种可

UNIX多进程 - 销毁僵尸进程 - wait()和waitpid()函数

#include <sys/types.h> #include <sys/wait.h> pid_t wait(int *status); pid_t waitpid(pid_t pid, int *statusPtr, int options); 现在要知道调用wait或waitpid的进程可能会发生什么情况: 如果其所有子进程都在运行,则阻塞. 如果一个子进程已经终止,正在等待的父进程获取到终止状态,则取得该子进程的终止状态立即返回. 如果他没有任何子进程,则立即出错返回. 如

【APUE】wait与waitpid函数

当一个进程终止时,内核就向其父进程发送SIGCHLD信号.因为子进程终止是个异步事件,所以这种信号也是内核向父进程发的异步通知.父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用执行的函数.对于这种信号的系统默认动作是忽略它. 调用wait或waitpid的进程发生的情况如下: 1.如果所有子进程都还在运行,则阻塞 2.如果一个子进程已终止,正等待父进程获取其终止状态,则取得该子进程的终止状态立即返回 3.如果它没有任何子进程,则立即出错返回 #include <sys/wait.h>

进程控制(七)---wait 和 waitpid 函数详解

进程的终止可以分为异常终止和正常终止. 当进程是正常终止的时候,子进程会通过 exit 函数向父进程传递终止状态: 当进程是异常终止的时候,内核(而不是进程)会传递给父进程一个信号编号值. 所以说无论子进程是正常终止还是异常终止,父进程都可以通过 wait 或者 waitpid 函数来获取到子进程的终止状态,通过参数 status. 无论子进程是正常终止还是异常终止 或者 子进程暂停了,内核都会向父进程发送一个 SIGCHLD 信号,但是父进程对于此信号的默认动作是忽略.当然我们也可以捕捉该信号

PHP加密解密函数实例教程

PHP加密解密函数分享,一个是Discuz!的authcode加密函数(带详细分解),一个是encrypt()函数. 需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理.最常见的应用在用户登录以及一些API数据交换的场景.笔者收录了一些比较经典的PHP加密解密函数代码,分享给大家.加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果.1.非常给力的authcode加密

4.2 access函数实例

int access(const char *filenpath, int mode); 功 能: 确定文件或文件夹的访问权限. mode,要判断的模式 在头文件unistd.h中的预定义如下: #define R_OK 4 /* Test for read permission. */ #define W_OK 2 /* Test for write permission. */ #define X_OK 1 /* Test for execute permission. */ #define

插入函数实例

--插入函数实例 create table stu(    stu_name varchar(100) null,    stu_age int);insert into stu values('张三',88);insert into stu values('asd',66);insert into stu values('[email protected]#',22);insert into stu values('nihao',2);insert into stu values('ss''s

程序4-6 utime函数实例

1 //http://blog.chinaunix.net/uid-24549279-id-71355.html 2 /* 3 ============================================================================ 4 Name : test.c 5 Author : blank 6 Version : 7 Copyright : Your copyright notice 8 Description : 程序4-6 utime函