如何创建一个进程?
子进程拷贝父进程的代码和数据,进程拥有自己的独占资源(写时拷贝),父,子进程共享代码区,不共享数据区(私有化)
当使用pid_t fork(void)创建进程时,若创建成功,给父进程返回子进程id,给子进程返回0,失败的话,-1被返回给父进程。
子进程找到父进程方法是唯一的,父进程找子进程不唯一。
猜测运行结果,会打印几条消息??
#include<stdio.h> #include<unistd.h> #include<sys/types.h> int main() { int i=0; pid_t id; for(;i<2;++i) { id=fork(); if(id==0){//child printf("pid: %d,ppid: %d\n",getpid(),getppid()); } else if(id>0){//father printf("pid: %d,ppid: %d\n",getpid(),getppid()); } } return 0; }
运行结果显示:用fork()创建子进程后执行的是和父进程相同的程序(但可能执行不同的代码分支:if条件判断分流)
后面的ppid为1显示他们变成了孤儿进程,被1号进程领养。
#include<stdio.h> #include<unistd.h> #include<sys/types.h> int main() { int i=0; pid_t id; for(;i<2;++i) { id=fork(); if(id==0){//child printf("pid: %d,ppid: %d\n",getpid(),getppid()); } else if(id>0){//father printf("pid: %d,ppid: %d\n",getpid(),getppid()); } } printf("pid: %dHello\n",getpid()); return 0; }