#include #include #include #include #include // atexit #include int main(int argc, char const *argv[]) { pid_t pid = vfork(); if (pid == 0) { for (int i = 0; i < 3; i++) { // vfork 子进程和父进程会共享内存 pid = vfork(); if (pid == 0) { // 子进程 for (int i = 0; i < 5; i++) { printf("%d vfork的子进程 i=%d\n", getpid(), i); sleep(1); } _exit(0); // 回收资源退出; vfork创建的子进程结束后,才会执行父进程 } } } else if (pid > 0) { // 父进程 while (1) { printf("%d 父进程 \n", getpid()); sleep(1); } } return 0; }