Linux_4.2_多进程程序设计

来源:互联网 发布:自学java不学c语言 编辑:程序博客网 时间:2024/05/16 12:25




4.1创建进程

4.1.1 函数名

fork

4.1.2 函数原形

pid_t fork(void)

4.1.3 函数功能

创建一个子进程

4.1.4 所属头文件

#include<unistd.h>

4.1.5 返回值

成功:在父进程中返回子进程的pid

     在子进程中返回的是0

失败: -1

4.1.6 参数说明

无参数

 

4.2创建进程

4.2.1 函数名

vfork

4.2.2 函数原形

pid_t vfork(void)

4.2.3 函数功能

创建一个子进程,并阻塞父进程

4.2.4 所属头文件

#include <sys/types.h>

#include <unistd.h>

4.2.5 返回值

成功:在父进程中返回子进程的pid

     在子进程中返回的是0

失败: -1

4.2.6 参数说明

无参数

 

4.3 进程等待

4.3.1 函数名

wait

4.3.2 函数原形

pid_t wait(int *status)

4.3.3 函数功能

挂起调用它的进程,直到其子进程结束

4.3.4 所属头文件

#include<sys/types.h>

#include<sys/wait.h>

4.3.5 返回值

成功:返回终止的那个子进程的id

失败:返回-1

4.3.6 参数说明

status: 记录子进程的退出状态


4.4 执行程序

4.4.1 函数名

execl

4.4.2 函数原形

int execl(const char *path,const char *arg,…)

4.4.3 函数功能

运行可执行文件

4.4.4 所属头文件

#include<unistd.h>

4.4.5 返回值

成功:不返回

失败:才返回

4.4.6 参数说明

path:要运行的可执行文件的路径

arg:可执行文件运行需要的参数



fork与vfork区别:

1>fork的父进程与子进程不一定那个先那个后.

    vfork先执行子进程后运行父进程.

2>fork创建的子进程具有独立的数据段,堆,栈

    vfork创建的子进程与父进程共享数据段,堆,栈


fork与exec区别:


  exec执行后是将原有的代码覆盖掉,变成exec的执行程序.



0 0