用pipe()实现父子进程的通信,但是有问题,求帮助

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
zero_hsy
帖子: 37
注册时间: 2013-03-03 10:45
系统: ubuntu

用pipe()实现父子进程的通信,但是有问题,求帮助

#1

帖子 zero_hsy » 2013-04-05 9:25

看了pipe()的功能,比如说写功能,在写的时候都是写入要写内容的首地址,但是如何把我计算的结果一个个写入pipe中,并输出到屏幕上呢?
比如说:

代码: 全选

int shm[66][66];
for (i=0;i<66;i++)
    for (j=0;j<66;j++)
        shm[i][j]=i;
   

如何把shm的值一个个写入pipe中呢?
然后如何从pipe中读出一个个值输出到屏幕上呢?
头像
huangbster
帖子: 187
注册时间: 2012-10-29 11:35
系统: UBUNTU

Re: 用pipe()实现父子进程的通信,但是有问题,求帮助

#2

帖子 huangbster » 2013-04-05 14:14

对于:
int pipefd[2];
一个线程写pipefd[1];一个线程读pipefd[0];
man 2 pipe看看,里面有例子。
需要了解更多,可以man 2 read和man 2 write。
zero_hsy
帖子: 37
注册时间: 2013-03-03 10:45
系统: ubuntu

Re: 用pipe()实现父子进程的通信,但是有问题,求帮助

#3

帖子 zero_hsy » 2013-04-05 18:22

我知道pipefd[2],但是如何做到把一个个Int型数据一次又一次的写入????求帮助啊!!!!
头像
huangbster
帖子: 187
注册时间: 2012-10-29 11:35
系统: UBUNTU

Re: 用pipe()实现父子进程的通信,但是有问题,求帮助

#4

帖子 huangbster » 2013-04-05 19:50

man 2 write看看。
不过像你这种应用可能使用eventfd+共享内存比较适合。
zero_hsy
帖子: 37
注册时间: 2013-03-03 10:45
系统: ubuntu

Re: 用pipe()实现父子进程的通信,但是有问题,求帮助

#5

帖子 zero_hsy » 2013-04-06 10:42

恩,共享内存可以,我做过,但是老师作业一定要用管道来写,如果这样的话,用write()怎么写啊?
回复