1. 函数原型:pid_t fork(void)
功能:完整地拷贝父进程的整个地址空间。
课本例子:
该程序 使用fork 函数新建了一个子进程,其中父进程返回子进程的PID,而子进程返回值为0;
注意点:
1.程序执行的时候,执行 fork 之后 父进程的 result 返回值应该为 子进程的PID,子进程返回0,可以用返回值判断当前是哪个进程。
2.子进程是复制了父进程的所有内容,除了PID,因此在父进程中的变量改变了,子进程中并不会有改变。例子如下:
结果可想而知输出结果:
The value is 10
The value is 10
3. 和 vfork 不同的是,vfork 函数通过允许父子进程可访问相同物理内存,当子进程需要改变内存中数据时才拷贝父进程 (写操作时拷贝)
2. 函数原型:int execl(const char, const char *arg,....)
int execv(const char, char * const arg[],....)
...........
功能:进程执行另个程序调用的函数
例子:
注意点:
1. exec 函数族 不能直接执行管道命令,那么如何使用exec 执行管道命令呢?
课后作业:
1.创建3个进程,其中一个为父进程,其余两个是该父进程创建的子进程,其中一个进程运行一条Linux指令(该指令 要带管道命
令 如 : ls -l | more),该条指令自定;另一个子进程在打印一条提示信息并暂停3秒后退出。要求创建新进程后要进行出错
处理。
解答:请看 第一课习题之我的解决方案。