首页 > 代码库 > 一、进程与信号进程的创建
一、进程与信号进程的创建
进程创建
#include <sys/types.h>#include <unistd.h>pid_t fork(void);fork 调用2次,所以又2次返回值,父进程中返回子进程id》0 ,子进程中返回0,出错返回-1
进程实例
#include <unistd.h>#include <string.h>#include <fcntl.h>#include <stdlib.h>#include <stdio.h>int main(void){ printf("now pid: %d\n",getpid()); pid_t pid; pid=fork(); int i; if(pid<0) { printf("create progress error\n"); return 1; } else if(pid ==0) { for(i=0;i<10;i++) { printf("I am son progress,pid: %d ppid: %d\n",getpid(),getppid()); i++; sleep(1); } } else { for(i=0;i<10;i++) { printf("I am father progress,pid: %d ppid: %d\n",getpid(),getppid()); i++; sleep(1); } } printf("pid: %d\n",getpid()); sleep(1); return 0;}
运行结果
now pid: 3324I am father progress,pid: 3324 ppid: 3166I am son progress,pid: 3325 ppid: 3324I am father progress,pid: 3324 ppid: 3166I am son progress,pid: 3325 ppid: 3324I am father progress,pid: 3324 ppid: 3166I am son progress,pid: 3325 ppid: 3324I am father progress,pid: 3324 ppid: 3166I am son progress,pid: 3325 ppid: 3324I am father progress,pid: 3324 ppid: 3166I am son progress,pid: 3325 ppid: 3324pid: 3324pid: 3325
可以看出父子进程是交替运行的
父子进程哪个先运行根据系统调度
子进程继承
子进程继承属性 用户信息权限,目录信息,信号信息,环境,共享存储段,资源限制,堆,栈和数据段,共享代码段子进程特有属性 进程id,锁信息,运行时间,未决信号操作文件的内核结构变化 子进程只继承父进程的文件描述符表,不继承单共享文件表项和i-node 父进程创建一个子进程后,文件表项的引用计数器加1变2,当父进程close操作后,计数器减1,子进程还是可以使用文件表项,只有计数器为0时才释放文件表项
只有正文段共享物理内存
静态变量,全局变量存储于正文段,局部变量存储于栈中
一、进程与信号进程的创建
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。