📄 test7.c
字号:
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/unistd.h>#include <sys/wait.h>#include <string.h>#include <errno.h>void signal_child_handler(int sig);int main(int argc, char **argv){ pid_t pid; if ((pid = fork()) < 0) { fprintf(stderr, "ERROR: Call fork() failed: %s, errno = %d.\n", strerror(errno), errno); exit(1); } if (pid > 0) { // XXX: Parent process fprintf(stdout, "[%d] I'm parent process.\n", getpid()); fprintf(stdout, "[%d] New created process is %d.\n", getpid(), pid); signal(SIGCHLD, signal_child_handler); /* int status; pid_t p; //p = wait(&status); // pid_t waitpid(pid_t pid, int *status, int options); p = waitpid(pid, &status, 0); //wait(&status); fprintf(stdout, "[%d] DEBUG: catched process %d, status = %d.\n", getpid(), p, status); */ for (;;) { sleep(1); } } else { // XXX: Child process fprintf(stdout, "[%d] I'm child process process, my pid is %d.\n", getpid(), getpid()); sleep(5); exit(0); } return 0;}void signal_child_handler(int sig){ int status; pid_t p; fprintf(stdout, "[%d]DEBUG: Cached SIGCHLD.\n", getpid()); //p = waitpid(pid, &status, 0); wait(&status); fprintf(stdout, "[%d] DEBUG: catched process %d, status = %d.\n", getpid(), p, status);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -