简单的进程间通信

简单的进程间通信

命令行参数:

情况1:在终端执行程序时,给子进程传递命令行参数。

情况2:使用vfork+exec创建进程时,给子进程传递命令行参数。

只能在父子进程之间,在父进行创建子进程时使用,只能由父进行传递给子进程,单向通信,并且只能传递一些简单的字符串数据。

环境变量表:

情况1:使用fork创建子进程时,子进程会拷贝一份父进程的环境变量表。

情况2:使用vfork+exec创建进程时,给子进程传递一份父进程的环境变量表,子进程拿到环境表后会进行拷贝。

只能在父子进程之间,父进行创建子进程时使用,只能由父进行传递给子进程,单向通信,并且只能传递一些简单的字符串数据。

信号:

情况1:使用kill向指定的进程发送信号进行通信。

情况2:使用sigqueue向指定的进程发送信号,也可以附带一些简单的数据。

可以在任意进程之间进行通信,但也只能是互相告知某某事件发生了,即使用能使用sigqueue带一些数据,但只有能传递一个int类型整数,只有通过fork创建的子进程才能传递内存地址。

文件:

情况1:使用文件+信号,让任意两个进程之间传递大量数据,但要各自控制好位置指针,协调好读写时间。

情况2:使用文件+文件锁,也可以让任意两个进程之间传递大量数据,但文件锁的操作比较麻烦,也有可能陷入死锁的情况。

单纯的使用文件进行通信,无法协调读取和写入的时间,空间造成文件内的数据混乱,所以必须配合使用信号或文件锁。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值