代码示例
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<stdlib.h>
#include<sys/wait.h>int main(int argc, const char* argv[]) {pid_t pid = -1;int status = 0;int ret = -1; // 创建子进程。若创建成功,则在子进程中返回0,父进程中返回子进程的pidpid = fork();if (0 < pid) {perror("fork");return 1;}if (0 == pid) { // 子进程printf("这是子进程。进程号 = %d, 父进程号 = %d\n", getpid(), getppid());exit(0); // 退出子进程,或者return。} else { // 父进程printf("这是父进程。进程号 = %d, 子进程号 = %d\n", getpid(), pid);}ret = wait(&status); // 父进程等待回收子进程资源if(-1 == ret) {perror("wait");return 1;} return 0;
}
GDB调试默认跟踪父进程,在fork函数调用之前设置跟踪子进程。那么gdb就会跟踪子进程。
set follow-fork-mode child