Я перенаправляю файловые дескрипторы для stdin и stdout в дочернем процессе следующим образом.
Теперь я хочу, чтобы дочерний процесс ждал, пока данные не будут доступны во входном дескрипторе. В настоящее время, если данные не доступны во входном дескрипторе, тогда дочерний процесс принимает некоторое случайное значение (я думаю, EOF) и завершается.
fd0=open("in1.dat", O_RDWR|O_CREAT);
fd1=open("out1.dat", O_RDWR|O_CREAT);
if(pid==0)
{
dup2(fd0, 0); // redirect input to the file
dup2(fd1, 1); // redirect output to the file
execlp("./flip","flip","new","4",NULL);
}