【发布时间】:2015-01-19 12:58:31
【问题描述】:
在 more 命令中,它不会从标准输入读取输入。但是使用 dup2() 函数将标准输入更改为一个文件描述符,届时它将起作用。为什么会这样?
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
main()
{
int fd=open("coprocess.c",O_RDWR);
if ( fork() == 0 )
{
dup2(fd,0);
close(fd);
execl("/bin/more","more",(char *)0);
printf("error\n");
}
else
wait(0);
}
【问题讨论】:
-
显然更多是从标准输入读取,否则您的 dup2 示例将无法正常工作!?