【发布时间】:2014-04-12 14:21:26
【问题描述】:
我目前正在使用"unistd.h" 和"sys/wait.h" 来处理我的操作系统作业。我正在尝试实现图形管道。
由于在图形管道中,一个进程的输出有可能作为输入发送到多个进程,我需要将其存储在缓冲区中并循环发送。
要从进程读取输出,我使用read() 函数。问题是,由于输出中的字符数是可变的,要么我需要逐个字符地读取它,要么以某种方式找到输出的大小。
我正在尝试第一个选项。这是我的代码
string buffer;
char temp[1];
while (/*condition*/)
{
read (pipe[0], temp, 1);
buffer.push_back (temp[0]);
}
我的问题是必须在循环内的条件是什么?
附:如果第二个选项更容易,那么如何检查管道中进程的输出大小?
【问题讨论】:
标签: c++ operating-system pipe