waitpid返回值,waitpid函数返回值
今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家!
定义函数 pid_t wait(int* status);
wait()会暂时停止目前进程的执行,直到有信号来到或子进程结
束。如果在调用wait()时子进程已经结束,则wait()会立即返
回子进程结束状态值。子进程的结束状态值会由参数status返回,
而子进程的进程识别码也会一快返回。如果不在意结束状态值,则
参数status可以设成NULL。子进程的结束状态值请参考waitpid()。
如果执行成功则返回子进程识别码(PID),如果有错误发生则返回
printf(“This is the child process.pid=%d\n”,getpid());
printf(“This is the parent process,wait for child...\n”;
printf(“child’s pid=%d.exit status=^d\n”,pid,i);
This is the child process.pid=1501
This is the parent process.wait for child...
child’s pid=1501,exit status=5
waitpid(等待子进程中断或结束)
定义函数 pid_t waitpid(pid_t pid,int* status,int options);
waitpid()会暂时停止目前进程的执行,直到有信号来到或子进程
结束。如果在调用wait()时子进程已经结束,则wait()会立即
返回子进程结束状态值。子进程的结束状态值会由参数status返回,
而子进程的进程识别码也会一快返回。如果不在意结束状态值,则
参数status可以设成NULL。参数pid为欲等待的子进程识别码,
pid0等待任何子进程识别码为pid的子进程。
参数option可以为0或下面的OR组合:
WNOHANG如果没有任何已经结束的子进程则马上返回,不予以
WUNTRACED如果子进程进入暂停执行情况则马上返回,但结束
子进程的结束状态返回后存于status,底下有几个宏可判别结束情
WIFEXITED(status)如果子进程正常结束则为非0值。
WEXITSTATUS(status)取得子进程exit()返回的结束代码,一
般会先用WIFEXITED来判断是否正常结束才能使用此宏。
WIFSIGNALED(status)如果子进程是因为信号而结束则此宏值为
WTERMSIG(status)取得子进程因信号而中止的信号代码,一般
会先用WIFSIGNALED来判断后才使用此宏。
WIFSTOPPED(status)如果子进程处于暂停执行情况则此宏值为
真。一般只有使用WUNTRACED时才会有此情况。
WSTOPSIG(status)取得引发子进程暂停的信号代码,一般会先
用WIFSTOPPED来判断后才使用此宏。
如果执行成功则返回子进程识别码(PID),如果有错误发生则返回
本文来自ChinaUnix博客,如果查看原文请点:blog.chinaunix.net/u2/60641/showart_488226.html
1、-1是出现错误的返回值,我就不说了。
2、0只有当你的 waitpid第三个参数包含 WNOHANG的时候才有可能。
3、result= waitpid(pid, NULL, option);
4、上面的代码,由于子进程永远不会结束(除非它被kill),父进程会一直停在 waitpid那个系统调用,等待子进程结束(当子进程结束后, waitpid的返回值等于子进程 pid)。
5、但是如果 option=WNOHANG;父进程不会停在 waitpid那里, waitpid会立刻返回 0,表示被等待的子进程并没有结束。
wwW.Xtw.Com.cN系统网专业的PC、手机系统开发下载平台,HarmonyOS系统、安卓、OS、windows电脑重装系统在线下载安装,操作系统平台技术学习,攻略教程,技术交流。
免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!
联系邮箱:773537036@qq.com