85. 进程间通信 - 无名管道1

基于fork创建的两个进程,彼此独立。在用户空间无法互相通信。操作的方式是在内核空间创建一个对象,基于同一个对象对AB两个进程对象管理。比如进程A写入内核对象,进程B从内核对象读出,这样就完成了两个进程间的通信。对象不一样,通信方式也不一样

无名:文件系统中无文件名/文件节点

有名:文件系统中有文件名/文件节点

队列:有两端,只能在两端进行输入/输出。 一端为入队列,另一端为出队列。

Open函数只能创建普通文件

Open(文件名,打开模式,权限),返回值是文件描述符

返回的文件描述符fd[2],是因为它是一个队列,fd[0]读文件描述符/fd[1]写文件描述符

单进程,读写管道

执行完后,发现第30行并没有被执行,即验证了 管道中没东西可读,就阻塞

查看进程状态,发现a.out属于S+状态,阻塞

D    不可中断睡眠 (通常是在IO操作) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生
R   正在运行或可运行(在运行队列排队中)
S   可中断睡眠 (休眠中, 受阻, 在等待某个条件的形成或接受到信号)
T   已停止的 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行
W   正在换页(2.6.内核之前有效)
 X   死进程 (未开启)
 Z   僵尸进程  进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放BSD风格的
 <   高优先级(not nice to other users)
 N   低优先级(nice to other users)
 L   页面锁定在内存(实时和定制的IO)
 s   一个信息头
 l   多线程(使用 CLONE_THREAD,像NPTL的pthreads的那样)
 +   在前台进程组

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值