ChinaUnix.net
相关文章推荐:

进程间通信 管道满

本文介绍通信最简单的形式-- 管道管道中最简单的就是 popen与pclose 函数。 FILE *popen(const char *command, const char *type); 第一个参数为终端中命令语句,第二个为“r”或“w”,取决于是可读还是可写管道。 int pclose(FILE *stream); 注意popen返回的是文件指针而不是文件描述符,书中第一个例子如下: #include unistd.h> #include stdlib.h> #include stdio.h> #include string.h> int main() { ...

by jexpo - Linux文档专区 - 2009-03-14 19:30:09 阅读(654) 回复(0)

相关讨论

首先明确一点,在运行过中是互相隔离的,他们互不打扰,并且每个都以为自己在独占整个内存空,既在X86平台下,每个都以为自己占有整个4G的内存,这当然是内存映射机制的功劳,不是今天的主题。 明确了这一点,在运行时有时需要跟其他的同步或者共享等,如一个计算,A需要B的一个数值,这就需要互相通信,linux提供了很好的通信机制,这里主要是管道通信。 1、int pipe(fd[2]) f...

by feitianx1 - Linux文档专区 - 2007-10-20 21:31:21 阅读(574) 回复(0)

Linux的可以利用管道通信管道分为有名管道和无名管道,无名管道只能用于亲属通信,而有名管道则可用于无亲属关系的。 无名管道例子 #define INPUT 0 #define OUTPUT 1 void main() { int file_descriptors[2]; /*定义子号 */ pid_t pid; char buf[BUFFER_LEN]; int returned_count; /*创建无名管道*/ pipe(file_descriptors); /*创建子*/ if ((pid = fork()) == -...

by huangxb_csu - Linux文档专区 - 2007-12-05 13:44:53 阅读(661) 回复(0)

本帖最后由 glcore 于 2012-12-10 10:38 编辑 int main() { FILE *fp1, *fp2; char buf[128]; fp1=popen("more", "w"); fp2=fopen("/etc/passwd","r"); while (fgets(buf,128,fp2) != NULL) { if(fputs(buf,fp1) == EOF ) exit(1); } pclose(fp1); } 如果正确添加pclose函数,序能正确接收用户的输入,并进行分页处理。 但是如果我将pclose函数注释掉,那么序将不会分页显示,接收到用户的输入则直接退出了。 为什么p...

by glcore - C/C++ - 2012-12-11 12:00:13 阅读(1531) 回复(6)

原文 1、 管道概述及相关API应用 1.1 管道相关的关键概念 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 只能用于父子或者兄弟(具有亲缘关系的); 单独构成一种独立的文件系统:管道对于管道两端的而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且...

by davycu - Linux文档专区 - 2009-06-09 16:57:19 阅读(697) 回复(0)

1、 管道概述及相关API应用

1.1 管道相关的关键概念

管道是Linux支持的最初Unix IPC形式之一,具有以下特点:

  • 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道
  • 只能用于父子或者兄弟(...

by cuiwei000 - 移动操作系统 - 2011-12-22 08:51:09 阅读(600) 回复(0)

为了实现计算Fibonacci数列 初始读入的数据为1 1 父将计算出的结果写入管道读取管道中的数据在进行运算 如此往复 直到n个结束 序到 if((childpid=fork())==-1)会输出Failed to read from the pipe: Bad file descriptor Failed to write to the pipe: Bad file descriptorFailed to read from the pipe: Bad file descriptor Failed to write to the pipe: Bad file descriptorFailed to read from the pipe: Bad...

by tomharold - Linux环境编程 - 2009-11-30 18:32:09 阅读(997) 回复(0)

本文阐述了一个使用 socketpair 系统调用在 Linux 上实现双向通讯管道的方法,并提供了一个实现。 问题和常见方法 Linux 提供了 popen 和 pclose 函数 (1) ,用于创建和关闭管道与另外一个进行通信。其接口如下: FILE *popen(const char *command, const char *mode); int pclose(FILE *stream); 遗憾的是,popen 创建的管道只能是单向的 -- mode 只能是 "r" 或 "w" 而不能是某种组合--用户只能选择要么往里写,要么从...

by zxg623 - Linux文档专区 - 2008-09-28 08:42:34 阅读(1011) 回复(0)

在linux 通信的几种主要手段中。其中管道和有名管道是最早的通信机制之一, 管道可用于具有亲缘关系通信,有名管道克服了管道没有名字的限制,因此,除具 有管道所具有的功能外,它还允许无亲缘关系通信管道具有以下特点: 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 只能用于父子或者兄弟(具有亲缘关系的); ...

by pmdxx - Linux文档专区 - 2008-07-24 18:02:49 阅读(955) 回复(0)

在本系列序中作者概述了 linux 通信的几种主要手段。其中管道和有名管道是最早的通信机制之一,管道可用于具有亲缘关系通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系通信。 认清管道和有名管道的读写规则是在序中应用它们的关键,本文在详细讨论了管道和有名管道通信机制的基础上,用实例对其读写规则进行了序验证,这样做有利于增强读者对读写...

by huqwstar53 - Linux文档专区 - 2007-01-04 17:37:27 阅读(420) 回复(0)

通信的方式之一------管道,我想咨询一下: 管道模式:父从文件中读取数据写管道,子将标准输入作为管道的读端; 实现过:父fork出子后,由于系统先执行父还是子是未知的,那么怎么能保证子在读取管道的时候,管道中已经有了父写入的数据呢? 序代码: #include ; #include ; #include ; #define DEF_PAGER "/usr/bin/more" #define MAXLIN...

by penda - 其他UNIX - 2004-12-28 17:17:11 阅读(2113) 回复(5)