前言一、wait函数二、例程
前言
本文记录的是wait的用法
一、wait函数
代码如下(示例):
#include#include #include #include int main(int argc, char const *argv[]) { int i = 0, status; pid_t pid = fork(); if(pid) { printf("我是父进程! 我的ID是:%dn", getpid() ); wait(&status); printf("子进程已经退出!n"); } else{ printf("我是子进程! 我的ID是:%dn", getpid() ); sleep(3); } return 0; }
结果如图所示:
子进程等待三秒后结束,然后父进程打印信息
代码如下(示例):
#include#include #include #include #include int main(int argc, char const *argv[]) { int i = 0, status; pid_t pid = fork(); if(pid) { printf("我是父进程! 我的ID是:%dn", getpid() ); wait(&status); printf("子进程已经退出!n"); if(WIFEXITED(status)) { printf("子进程正常退出,退出值为:%dn" , WEXITSTATUS(status)); } else if( WIFSIGNALED(status) ) { printf("子进异常退出,被信号杀死:%dn" , WTERMSIG(status)); printf("退出值为:%dn" , WEXITSTATUS(status)); } } else{ printf("我是子进程! 我的ID是:%dn", getpid() ); sleep(10); exit(35); } return 0; }
结果如图所示:
代码如下(示例):
人为结束子进程
#include#include #include #include #include int main(int argc, char const *argv[]) { int i = 0, status; pid_t pid = fork(); if(pid) { printf("我是父进程! 我的ID是:%dn", getpid() ); wait(&status); printf("子进程已经退出!n"); if(WIFEXITED(status)) { printf("子进程正常退出,退出值为:%dn" , WEXITSTATUS(status)); } else if( WIFSIGNALED(status) ) { printf("子进异常退出,被信号杀死:%dn" , WTERMSIG(status)); printf("退出值为:%dn" , WEXITSTATUS(status)); } } else{ printf("我是子进程! 我的ID是:%dn", getpid() ); sleep(10); exit(35); } return 0; }
结果如图所示:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)