linux新建进程--fork
来源:互联网 发布:java搜索引擎lucene 编辑:程序博客网 时间:2024/06/10 03:15
fork用于创建新进程,新进程与原进程具有从属关系,原进程称之为父进程,新建进程称为子进程,此进程还有其他什么关系呢?
1. 进程号
子进程的父进程应该为原进程,原进程的子进程应该为新建的进程号。
2. 返回值
使用fork新建进程返回值有三种,出错返回-1,0返回给子进程 ,大于0的正整数返回给父进程。
3. 数据共享
子进程会复制父进程的所有数据,在fork进程之前是数据会被复制到子进程中,一般通过返回值来判断子进程执行的内容。
int main(){ pid_t pid; int i = 0; pid = fork(); if (pid == -1) //创建失败 { printf("creat process error!\n"); exit(1); } else if (pid == 0) //子进程 { printf("The child process ID is %d\n",getpid()); i++; } else // 父进程 { printf("The father process ID is %d\n",getpid()); i++; } printf("i = %d\n", i); return 0;}
首先看一下此程序段,按照常规的if...else... 的逻辑两段代码应该是矛盾的,不会同时执行,但是实际上却同时执行了,那么原因是什么呢?原因在于上面的第2点,返回值的返回为0给子进程,大于0给父进程。由于在采用fork之后,有两个进程同时执行,只不过在两个进程中,子进程执行的是if内的内容,而父进程执行的是else的内容,执行的程序段不一样而已,并不矛盾。
0 0
- linux新建进程--fork
- linux子进程fork
- Linux:fork进程创建
- linux 进程控制 fork
- Linux进程 -- fork操作
- Linux-fork进程创建
- Linux多进程-fork()
- Linux新建进程
- linux进程控制-fork()
- linux进程(fork,waitpid)
- 【linux进程】fork函数浅析
- linux进程(fork,waitpid)
- Linux 进程之fork()讲解
- linux——fork(进程)
- Linux fork()创建子进程
- linux进程代码fork案例
- Linux c fork进程实践
- linux进程(fork,waitpid)
- Hbase 基本操作
- 如何解决 Sublime Text 3 不能正确显示中文的问题
- [Special] Design Pattern - Behavioral Patterns - Command Pattern
- 可拖动FPS显示框(UGUI)
- iOS8指纹识别代码例子
- linux新建进程--fork
- UVa 455 Periodic Strings
- java基础教程7:包
- java 第二章 理解面向对象
- android studio 需要虚拟化技术怎么破?
- Python Neurolab for neural network
- Caused by: java.sql.SQLException: The MySQL server is running with the --read-only option so it cann
- Part part = request.getPart("upfile"); 报错解决方法
- 【Arduino官方教程第零辑】基础部分 1-1 什么是Arduino