linux 下的多进程编程 总结

这篇文章我慢慢的写,可能需要1~2个礼拜

 

1,实现多进程的方法

 

在linux下,实现多进程编程主要依靠两个方法

a,fork(),通过复制当前进程来建立新的进程,最基本的新建进程的操作,新建的进程为调用进程的子进程,属于同一个进程组

     fork创建子进程的时候,会返回两个值,在父进程中返回子进程的标示,在子进程中返回0。因为fork会把父进程拷贝一份,所以分别返回就不足为奇了。

b,exec  exec是一系列方法,其实功能是一样的,只是参数不一样,方便使用。exec的方法通过用一个新的程序覆盖原内存空间,来实现新的进程。

 

exec的方法包括以下几种

 

 

int execl( const char *path, const char *arg, ...);

int execlp( const char *file, const char *arg, ...);

int execle( const char *path, const char *arg , ..., char* const envp[]);

int execv( const char *path, char *const argv[]);

int execvp( const char *file, char *const argv[]);

 

 

 

所以一般新建进程的方法就是:用fork创建子进程,子进程中用exec来加载程序覆盖原内存空间,这样,新的进程就建立了。

写一个程序来验证一下

 

执行就是 ls的效果,当然最后会加上this is the parent process这句话,这是在父进程中定义的。注意到父进程中wait句,只有当子进程执行结束后,wait才会结束

 

2,进程间用管道通信

代码 

 

管道之间的通信,如果在pipe()生成的管道中通信时,如果要用pipe管道替代标准输入输出,一定要在进程中关闭不必要的句柄,否则可能出现错误。例如下面这段程序需要在21行关闭管道输出,否则在子进程中将管道输出替代了标准输出,就不能将信息输出到标准输出了

 

 

 

如果在21行不关闭

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值