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

dup2的问题,百思不得其解,求教,谢谢

    来源: 互联网  发布时间:2017-02-24

    本文导语:  用dup2(1, fd);想要将输出到fd上的语句都输出到stdout上,可是不知道为什么屏幕上没有输出,请各位指教,谢谢! #include  #include  #include  int main() { int fd[2]; pipe(fd); pid_t pchild; if((pchild = fork()) == 0) { close(fd[0...

用dup2(1, fd);想要将输出到fd上的语句都输出到stdout上,可是不知道为什么屏幕上没有输出,请各位指教,谢谢!

#include 
#include 
#include 

int main()
{
int fd[2];
pipe(fd);

pid_t pchild;
if((pchild = fork()) == 0)
{
close(fd[0]);
dup2(fd[1], 1);

execl("/bin/ls", "ls", NULL);
}

else
{
close(fd[1]);
wait(NULL);

char cmd[100];
read(fd[0], cmd, 99);
cmd[99] = '';
printf("%s", cmd);
 //这一段语句可以得到输出,说明fd[0]是有数据的
                //然而把这段换成dup2(1, fd[0]); 就没有输出了,为什么得不到输出呢?
            
}
return 0;
}

|
道理是一样的,dup2把newfd关闭了,之前newfd与数据的关联关系已经不存在了

|
dup2(1, fd[0])是让fd[0]这个描述符共享描述符1,描述符1是终端输出,你读一个终端输出当然没有东西了。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 哪位大侠帮忙写一个函数dup1()实现dup2()的功能!或者直接提供dup2()的源码??
  • 关于dup2的一个问题
  • 关于dup2的问题!
  • UNIX环境下,如何实现dup2函数,不允许调用fcntl?
  • dup2 问题
  • 初学u编程,问个dup2的问题
  • Unix高级环境编程一有关dup2的习题,求解释!!!!
  • APUE初学者:请问dup,dup2函数可以用来干什么?有什么好处?
  • dup2函数问题
  • dup2后的奇异现象
  • dup2(fd[0],STDIN_FILENO)!=STDIN_FILENO疑问
  • 利用fork 与 dup2 执行 系统命令, 别的命令都可以获取执行结果,就fdisk 命令不可以. execve("/sbin/fdisk",args,NULL) , args 命令参数.
  • 哪位老大能讲一下lseek函数和dup与dup2函数是干什么用的,最好有实例
  • 急: 代码那里写错了??dup2 execve写的执行命令的程序, 重定向标准输入、输出、标准错误,无法获取到fdisk 的命令输出。别的命令都可以。附代码


  • 站内导航:


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

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

    浙ICP备11055608号-3