赞
踩
2、代码示例
#include <unistd.h> #include <stdio.h> #include <stdlib.h> int main() { int i; int n = 4; pid_t pid; //创建一个进程,给它一个pid for(i = 0; i < n; i++) //循环创建 { pid = fork(); //该进程作为父进程fork出子进程 if(pid < 0) //如果出错的话pid<0 { perror("fork error"); exit(1); //退出程序 } else if(pid > 0) //如果是父进程,pid>0 { break; //父进程退出循环,子进程继续做循环 } } printf("pid: %d, ppid: %d\n", getpid(), getppid()); //打印pid和其父进程的pid sleep(1); //等待,给进程创建反应时间 }
3、运行结果
2、代码示例
#include <stdlib.h> #include <stdio.h> #include <unistd.h> int main() { int i; int n = 4; pid_t pid; //创建一个进程,给它一个pid for (i=0 ;i<n; i++) //循环 { pid=fork(); //在循环里fork,由一个父进程fork出多个子进程 if(pid < 0) //如果pid<0,说明有错误 { printf("fork error"); //报错 }else if (pid == 0) //如果当前pid==0说明是子进程,跳出循环 { break; } //父进程继续参与创建 } printf("My pid is %ld,My parent pid is %ld\n",(long)getpid(),(long)getppid()); sleep(1); }
3、运行结果
#include <stdio.h> #include <sys/types.h> #include <unistd.h> int main() { int n = 4; int i, id=0; pid_t pid; //创建一个进程,给他一个pid for (i=1;i<N;++i) //循环 { pid = fork(); //创建子进程 if(pid == 0) //如果是子进程 { id = i; //把i赋值给id表示树的第几个孩子 } } printf("#%d is process %ld with parent %ld\n",id, (long)getpid(), (long)getppid()); }
运行结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。