当前位置:  技术问答>linux和unix

调试dup与pipe结合的简单程序

    来源: 互联网  发布时间:2016-07-23

    本文导语:  有如下的测试代码, 通过pipe和dup2函数来实现简单的主从进程的通信。 但主进程在fgets时阻塞住了, 没有获得和显示子进程发来的信息。 请大家帮忙看一下, 是什么问题。 谢谢!! #include  #include  #include  #includ...

有如下的测试代码,
通过pipe和dup2函数来实现简单的主从进程的通信。

但主进程在fgets时阻塞住了,
没有获得和显示子进程发来的信息。

请大家帮忙看一下,
是什么问题。
谢谢!!

#include 
#include 
#include 
#include 
#include 
#include 

void doChild(int in[2], int out[2]);
void doParent(int todc[2], int fromdc[2]);

int main()
{
        int pid, todc[2], fromdc[2];
        int tmp;

        if( pipe(todc)==-1 || pipe(fromdc)==-1 )
        {
                printf("pipe failedn");
                return 1;
        }

        if( (pid=fork()) == -1 )
        {
                printf("fork failedn");
                return 1;
        }
        if( pid==0 )
        {
                doChild(todc, fromdc);
        }
        else
        {
                doParent(todc, fromdc);
                wait(NULL);

                printf("wait finishedn");
        }

        return 0;
}

void doChild(int in[2], int out[2]) //子进程函数
{
/*
        if(dup2(in[0], 0) == -1)
        {
                printf("dup read failed in childn");
                return;
        }
        close(in[0]);
        close(in[1]);
*/

        int newOut;
        if((newOut=dup2(out[1], 1)) == -1)  //修改子进程的输出端
        {
                printf("dup write failed in childn");
                return;
        }
        close(out[1]);
        close(out[0]);

        for(int i=1; i

    
 
 

您可能感兴趣的文章:

  • 如何使用linux下gdb来调试python程序
  • kdevelop开发 网络程序 如何调试? 如何调试服务器端的程序
  • 有调试经验的高手请进:调试程序如何生成core?如何调试core文件定位错误。
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • linux下用gdb调试程序感觉非常不方便,不知道大家使用的什么工具进行调试的呀?
  • linux gdb: 我在一台机器上编译的程序用GDB可以调试,把程序放到另外一台机器上调试,调试信息就没有了 这是什么原因呢?
  • linux 新手散分贴 我要在linux下调试多个.c和.h文件的程序 怎么调试?
  • 请问载linux下如何调试汇编程序,有没有像debug的程序。
  • 程序访问内存非法退出,调试core时,却发现#0 0x00000000 in ?? () ,奶奶的,已经加了调试信息了
  • UNIX 程序如何进行程序的内部跟踪调试?
  • UNIX下C++可以用ddd来调试,请问bash shell程序有什么好的调试工具么??
  • 我写了个linux下的网络程序,程序在多个电脑间通信,但是我没有多个电脑,怎么调试这样的程序啊?
  • UNIX下的C程序如何调试?
  • 使用GDB调试程序,如何正确的向程序传递参数.
  • 关于linux下eclipse调试c++程序的问题
  • 如何调试多线程的代码? 多何调试网络代码 服务器的和客户端的 iis7站长之家
  • 开发网卡驱动程序一般用什么现成的程序或者工具来测试(调试)
  • linux下调试程序...
  • 请问deamon 程序应该怎么调试。
  • gdb 怎么调试socket程序
  • gdb能调试多大的程序
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • python之平台独立的调试工具winpdb介绍
  • kgdb调试环境配好了,怎么调试内核阿?????
  • UNIX下可逐行调试的调试软件
  • 大家一般用什么调试器调试intell格式的汇编?
  • GDB调试问题,多共享库调试
  • 关于GDB无法调试segmentaton fault的问题,调试就死机
  • ?:兄弟们,谈谈jsp的调试环境吧,谁有好的调试方法啊?
  • 如何调试多线程的代码? 多何调试网络代码 服务器的和客户端的
  • gdb调试时命令行参数如何输入?比如main(int argc,char **argv)中,我要把一个filename作为argv[1]传入给gdb调试
  • 为什么JCreator Pro 2.00_007不能进行单步调试,Build菜单下单步调试的选项是灰色的???好痛苦。。
  • gdb调试如何跟踪进入另外一个包含文件的内部函数进行调试?
  • gdb调试,每次循环怎么运行到指定的断点处,而不是单步调试
  • 请问Linux下的C语言程序开发大家如何进行断点调试和单步调试?
  • 单机,调试内核时,无法进入调试状态,怎么回事?
  • 怎么调试unix动态库.
  • Javascript 调试插件
  • JavaScript 调试工具 JSDT
  • linux下调试的问题
  • 关于驱动模块调试
  • 在Jsp的调试中,现在一般有什么比较有效的方法?
  • 在windows下编译和调试远程GDB BVRDE


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3