概述:
实际上我们多进程的管道使用时,是可以同时有多个读端和写端的。但是这个例子在平时不常用。下面我们只演示多个写端和一个读端的案例。
是否允许,一个pipe有一个写端,多个读端呢?是否允许有一个读端多个写端呢?
前面已经说了,是允许的。
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
pid_t pid;
int fd[2], i, n;
char buf[1024];
int ret = pipe(fd);
if(ret == -1){
perror("pipe error");
exit(1);
}
for(i = 0; i < 2; i++){
if((pid = fork()) == 0)
break;
else if(pid == -1){
perror("pipe error");
exit(1);
}
}
if (i == 0) {
close(fd[0]);
write(fd[1], "1.hello\n", strlen("1.hello\n"));
} else if(i == 1) {
close(fd[0]);
write(fd[1], "2.world\n", strlen("2.world\n"));
} else {
close(fd[1]); //父进程关闭写端,留读端读取数据
//sleep(1);//不加sleep的话,可能兄进程或者弟进程某个写入后,父进程直接读,然后回收兄弟进程后就结束了。导致下一次的数据无法再读取了。
n = read(fd[0], buf, 1024); //从管道中读数据
write(STDOUT_FILENO, buf, n);
for(i = 0; i < 2; i++) //两个儿子wait两次
wait(NULL);
}
return 0;
}
可以看到,不加sleep时结果可能打印不全或者内容不一样。
加上sleep后。虽然结果都是hello之后才world,但是也有可能是先world才hello,只不过因为循环因为i是先创建兄进程,所以hello的先打的概率比较大。
文章浏览阅读1.5k次。无线移动通讯发展历史最近5G的概念炒的如火如荼,为此,华为和高通还干了一仗。这篇文章从技术层面给大家分析,什么是5G,它和4G比,高级在哪里?我们来看看移动互联网的技术发展:然后我们在来看看他们之间的通讯速率比较:2G:150Kbps,折合下载速度15-20K/s3G:1-6Mbps,折合下载速度120K/s-600K/s4G:10-100Mbps,折合下载速度1.5M..._5g程序员应该学习什么 site:blog.csdn.net
文章浏览阅读2k次。大家好,我是极智视界,本文介绍一下 win10 IE浏览器无法打开网页的解决方法。_w10系统自带ie打开不了网页
文章浏览阅读1.2w次。python编写1+(1+3)+(1+3+5)+……(1+3+5+……+n)和的程序234游戏网友 提出于 2019-09-15 06:02:35请问:python编写1+(1+3)+(1+3+5)+……(1+3+5+……+n)和的程序采纳答案 欢迎参考下方网址,里面有Python习题跟答案,具体的代码截图,代码思路跟你的差不多,把代码考下来把参数修改一下就可以了网页链接#!/usr/b..._python中1+3+5...+999怎么写
文章浏览阅读7k次,点赞9次,收藏34次。过滤器(Filter)和 拦截器(Interceptor) 使用和区别_过滤器和拦截器
文章浏览阅读7.1k次。研究论文中有不少计算药物半抑制浓度IC50的拟合曲线图,可是你知道这种图该怎么做吗?今天笔者给大家分享一下这种拟合曲线图的作图方法。作图工具是Graphpad Prism,打开软件后,选择XY作图方式。将实验所得的数据填写入图表中注意x轴写入的是log[药物],比如说你加入的药物浓度分别为1-100000nM,那首先你必须先将这个浓度进行换算,一个有效的方法就是在Excel中进行计算,通过log[..._graphpad怎么增加曲线对应图例
文章浏览阅读553次。http://www.jqwidgets.com/jquery-widgets-demo/ $("#jqxgrid").jqxGrid({ theme: 'energyblue', altrows: true,//行间底色区分 width: 500, sortable: true,//设置可排序 pageable: tr..._"text\": \"\", \"datafield\": \"\","
文章浏览阅读2.4k次,点赞3次,收藏21次。和包含启动m_pProcess->start(AA.exe);,外部独立启动时,QT界面的程序输出栏会输出外部程序的调试内容,包含启动方式不显示。QT程序关闭时,包含启动的程序会自动跟随关闭,独立启动的程序仍然会独立运行,无影响。为保持QT程序良好的移植性,可以在程序启动时自动设置临时环境变量,只在QT程序运行时有效,设置完临时环境变量之后再启动m_pProcess。程序启动内部调用cmd启动,直接运行AA.exe,系统无法找到该程序,需指定路径或者将AA.exe路径添加到系统环境中。
文章浏览阅读4.6k次,点赞4次,收藏15次。Bash/Shell/Shell脚本的关系1.Shell是什么Shell俗称壳,是指“为使用者提供操作界面”的软件(命令解析器)。Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统程序。(用户<—>Shell<—>内核)Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。Shell是解释执行的脚本语言,在S..._bash脚本和shell脚本的区别
文章浏览阅读3.3k次,点赞5次,收藏6次。本文使用jxl.jar工具类库将数据按列写入Excel并设置格式(字体、背景色、自动列宽、对齐方式等)。
文章浏览阅读1.1w次。以下方法在2.1中测试成功。理论上2.1以上应该也可以。不过2.1以后的Android版本中已经有提供了相关方法,详见android.provider.Settings.Secure类。记得在AndroidManifest.xml中声明相关权限: android:name="android.permission.ACCESS_NETWORK_STATE"/>_android 网络开关工具 github
文章浏览阅读745次。go 语言中文网(每日资讯)_2020-05-29一、Go 语言中文网Go 语言之父:拿过奥运银牌,发明过航天望远镜,想用 Go 语言解放程序员!Go Web 开发如何优雅的包含静态资源文件?Go:从 context 源码领悟接口的设计Go 异常处理详解Go Redis 客户端源码阅读(3)协程间的通信二、亚军进化史Go 技术日报(2020-05-28)三、xueyuanjunGo 语言 Web 编程系列(十六)—— 设置、读取和删除 Cookie四、 _技术日报接口
文章浏览阅读137次,点赞9次,收藏4次。说明:根据自己的实际情况请参考使用,更多问题请参考博客中的其他文章。环境:win7+vs2013+NetCDF4.4.2。