Код:
int pf[2], fp[2];
pipe(pf);
pipe(fp);
pid_t parent = getpid();
pid_t child = fork();
char str[20];
char word[20] = "aspell -a test";
char buffer[100];
int count;
//dup2(0, pf[0]);
if (child != 0) {
char resu[100];
printf("I am the parent process. My PID is %d\n", parent);
sleep(5);
printf("Escrevi a palavra...\n");
write(pf[1], "teste\n", strlen("teste\n"));
close(pf[1]);
sleep(2);
count = read(fp[0], resu, strlen(resu));
close(fp[0]);
printf("resultado: %s\n", resu);
else {
//printf("I am the child process. My PID is %d\n", getpid());
//printf(" My parent's PID is %d\n", parent);
execlp("aspell", "aspell", "-a", NULL);
dup2(pf[0], 0);
dup2(1, fp[1]);
close(1);
//close(pf[0]);
execlp("aspell", "aspell", "-a", NULL);
sleep(2);
printf("Child process terminating\n");
}
Для приведенного выше кода всегда выводится
resultado:
Почему этослучиться?Fp [0] не читается правильно?
"Resultado:" должен быть stdout дочернего процесса и просто либо он выглядит мусором, либо ничего не появляется.