使用c程序执行tr - 输入输出错误

时间:2014-03-23 06:56:08

标签: exec fork tr

我是学生,正在尝试编写一个简单的程序用于学习目的。我写了以下程序:

#include <stdio.h>
#include <unistd.h>

int main()
{

     pid_t pid;

     pid = fork();
     if(pid < 0) 
     {
         fprintf(stderr,"Fork failed\n");
         return -1;
     }

     if(pid > 0) 
     { 
         printf("parent\n");
     }

     if(pid == 0) 
     { 

         char* args[] = {"/usr/bin/tr","[:lower:]","[:upper:]", NULL };
             execvp("/usr/bin/tr",args);
         fprintf(stderr,"Error in exec\n");
     }
     return 0;
  }

但我甚至无法运行这个简单的程序。我得到的输出是:

 parent
 /usr/bin/tr: read error: Input/output error

使用execv运行时,无法从标准输入获取输入吗?请帮忙。

1 个答案:

答案 0 :(得分:0)

您的问题是父进程已终止并关闭了标准输入。

添加

wait(pid);

到父代码,让它等待孩子退出。