我有一个父子进程,父进程可以读取子进程的输出并发送到子进程的输入。到目前为止,使用 shell 脚本,测试输入和输出数据的命令一切正常。我刚刚用一个简单的 C 程序进行了测试,但无法让它工作。这是C程序:
#include <stdio.h>
int main( void ) {
char stuff[80];
printf("Enter some stuff:\n");
scanf("%s", stuff);
return 0;
}
C 程序的问题是我的选择无法从子 fd 读取,因此程序无法完成。这是进行选择的位..
//wait till child is ready
fd_set set;
struct timeval timeout;
FD_ZERO( &set ); // initialize fd set
FD_SET( PARENT_READ, &set ); // add child in to set
timeout.tv_sec = 3;
timeout.tv_usec = 0;
int r = select(FD_SETSIZE, &set, NULL, NULL, &timeout);
if( r < 1 ) { // we didn't get any input
exit(1);
}
有谁知道为什么这会发生在 C 程序而不是 shell 程序上?
编辑:我应该指出子进程在参数上调用 exec,所以我无法访问它。