学校官网网页设计模板/seo和sem是什么
进程的退出状态至关重要,用wait系列函数,父进程可以捕捉到子进程的退出状态,若给定任意进程,其父进程已经确定,无法改变,自己如何获取到其退出状态呢。
可以用ptrace系统api attach到相应的进程,然后执行wait就可以在进程退出的时候,捕获其退出状态,代码如下:
#include <unistd.h>
#include <sys/ptrace.h>
#include <sys/wait.h>
#include <errno.h>int main(int argc, char *argv[])
{pid_t pid;printf("请输入进程号:\n");scanf("%d", &pid);printf("子进程暂停 2s\n");ptrace(PTRACE_ATTACH, pid, NULL, NULL);sleep(2);printf("子进程继续执行 5s\n");ptrace(PTRACE_CONT, pid, NULL, NULL);int wstatus = 0;int ret = waitpid(pid, &wstatus, 0);if(ret < 0){printf("waitpid failed, errno is %d, err msg is %s\n", errno, strerror(errno));return ret;}if (WIFEXITED(wstatus)) {int exit_status = WEXITSTATUS(wstatus);printf("normal exit, status is %d\n", exit_status);}return 0;
}