1、创建一个孤儿进程
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
pid_t pid=fork();
if(pid>0){
//父进程
fprintf(stdout,"%d是父进程,其子进程是%d\n",getpid(),pid);
}else if(0==pid){
//子进程
fprintf(stdout,"%d是子进程,其父进程是%d\n",getpid(),getppid());
while(1){
fprintf(stdout,"%d是子进程,其父进程是%d\n",getpid(),getppid());
sleep(1);
}
}else{
perror("fork");
return -1;
}
return 0;
}
测试:
2、创建一个僵尸进程
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
pid_t pid=fork();
if(pid>0){
//父进程
fprintf(stdout,"%d是父进程,其子进程是%d\n",getpid(),pid);
while(1){
fprintf(stdout,"%d是父进程,其子进程是%d\n",getpid(),pid);
sleep(1);
}
}else if(0==pid){
//子进程
fprintf(stdout,"%d是子进程,其父进程是%d\n",getpid(),getppid());
}else{
perror("fork");
return -1;
}
return 0;
}
测试:

这篇博客探讨了如何在C语言中创建孤儿进程和僵尸进程。孤儿进程是其父进程先于它终止的进程,而僵尸进程是已终止但其父进程未回收其资源的进程。示例代码展示了如何使用`fork()`函数来实现这两个过程,并通过`getpid()`和`getppid()`获取进程ID和父进程ID。
1328

被折叠的 条评论
为什么被折叠?



