父进程与curses写的子进程通过管道进行通信,父进程不能向管道写数据
需求:父进程获取数据,通过管道1传给子进程(子进程是用curses库写的),子进程处理完数据后,通过管道2将结果返回给父进程.本人解决方案:父进程重定向子进程的标准输入和输出到管道,并通过execl打开子进程,这样子进程就可以从管道1获取数据,然后将数据输出到管道2.
问题:父进程能正常打开子进程,但是父进程向管道1写数据时,报错,错误信息为:管道已经关闭. 提示:父进程可以打开其他不是用curses库写的子程序,并能正常通信。
猜测:子进程有没有可能在initscr()时覆盖了标准输入?所以在子进程被打开时,关闭了管道1的读端.
子进程代码如下:
int main()
{
char sz_read={0};
//开始curses模式
initscr();
// 禁用行缓冲
raw();
// 当执行getch()函数的时候关闭键盘回显
noecho();
// 关闭新行的平移
nonl();
string str_res;
int i_ch;
while( ( i_ch=getch()) != ERR )
{
addch(i_ch);
refresh();
}
endwin();
}
页:
[1]