秀杰空间

  • 首页
  • 心情笔记
  • Linux/Unix C/C++
  • PHP
  • 我的项目
秀杰笔记
做些有意义的事情
  1. 首页
  2. Linux/Unix C/C++
  3. 正文

UNIX环境高级编程学习之第十五章进程间通信 - 通过半双工匿名管道实现父子进程通信

2016年9月7日 1209点热度 0人点赞 0条评论

UNIX环境高级编程学习之第十五章进程间通信 - 通过半双工匿名管道实现父子进程通信
[code lang="cpp"]/* User:Lixiujie
* Date:20100818
* Desc:父子进程通过半双工匿名管道通信
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>

int main(void){
pid_t pid;
int pfd[2];
int cfd[2];
char szBuf[256];
if (pipe(pfd) < 0){
perror("pipe(pfd) failed!");
exit(1);
}
if (pipe(cfd) < 0){
perror("pipe(cfd) failed!");
exit(1);
}
if ((pid = fork()) < 0){
perror("fork() failed!");
exit(1);
}else if (pid > 0){ // parent
close(cfd[0]); // colse child read
close(pfd[1]); // colse parent write
while (1){
memset(szBuf, 0x00, sizeof(szBuf));
strcpy(szBuf, "P: Hello world!");
write(cfd[1], szBuf, strlen(szBuf)+1);
memset(szBuf, 0x00, sizeof(szBuf));
read(pfd[0], szBuf, sizeof(szBuf) - 1);
printf("%s/n", szBuf);
sleep(1);
}
}else{ // child
close(cfd[1]);
close(pfd[0]);
while (1){
memset(szBuf, 0x00, sizeof(szBuf));
read(cfd[0], szBuf, sizeof(szBuf) - 1);
printf("%s/n", szBuf);
memset(szBuf, 0x00, sizeof(szBuf));
strcpy(szBuf, "C: Hello world!");
write(pfd[1], szBuf, strlen(szBuf)+1);
sleep(1);
}
}
return 0;
}

[/code]

标签: UNIX环境高级编程
最后更新:2016年9月7日

秀杰

做些有意义的事情

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

秀杰

做些有意义的事情

标签聚合
epoll tuxedo 分布式 select mac socket protobuf ubuntu pb zookeeper UNIX环境高级编程
最新 热点 随机
最新 热点 随机
C++使用protobuf快速入门简明教程 Mac安装Brew(Homebrew)国内镜像源加速 从sockaddr_storage结构中取IP地址和端口 [转载]分布式之数据库和缓存双写一致性方案解析 TPS和QPS的区别和理解 2018最新可靠好用的DNS服务器地址汇总
UNIX环境高级编程学习之第十二章线程控制-以分离状态创建线程 从sockaddr_storage结构中取IP地址和端口 UNIX环境高级编程学习之第六章系统数据文件和信息-实现uid to name UNIX环境高级编程学习之第六章系统数据文件和信息-取所有用户名和UID, GID UNIX环境高级编程学习之第十六章网络IPC:套接字 - 简单UDP Socket 通信 UNIX环境高级编程学习之第六章系统数据文件和信息-修改第四章实现的Shell的“ls -l”功能

COPYRIGHT © 2023 个人笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang