免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1618 | 回复: 0
打印 上一主题 下一主题

[Linux] 父进程与curses写的子进程通过管道进行通信,父进程不能向管道写数据 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-24 16:46 |只看该作者 |倒序浏览
需求:父进程获取数据,通过管道1传给子进程(子进程是用curses库写的),子进程处理完数据后,通过管道2将结果返回给父进程.

本人解决方案:父进程重定向子进程的标准输入和输出到管道,并通过execl打开子进程,这样子进程就可以从管道1获取数据,然后将数据输出到管道2.

问题:父进程能正常打开子进程,但是父进程向管道1写数据时,报错,错误信息为:管道已经关闭. 提示:父进程可以打开其他不是用curses库写的子程序,并能正常通信。

猜测:子进程有没有可能在initscr()时覆盖了标准输入?所以在子进程被打开时,关闭了管道1的读端.

子进程代码如下:

int main()
{
char sz_read[1024]={0};
//开始curses模式
initscr();
// 禁用行缓冲
raw();
// 当执行getch()函数的时候关闭键盘回显
noecho();
// 关闭新行的平移
nonl();


string str_res;
int i_ch;
while  ( ( i_ch=getch()) != ERR   )
{
   addch(i_ch);
   refresh();
}
endwin();
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP