#include <unistd.h>
#include <stdio.h>
#include <sys/wait.h>
#define STDOUT 1
enum {READ, WRITE};
int main(int argc, char *argv[])
{
int fd[2];
FILE *f;
char *buffer;
int status;
int p_id;
if(pipe(fd) < 0) {
perror("Pipe creation");
return -1;
}
p_id=fork();
if(p_id < 0) {
perror(argv[0]);
return -1;
} else if(!p_id) {
dup2(fd[WRITE], STDOUT);
close(fd[WRITE]);
close(fd[READ]);
execl("/bin/echo", "echo", "Hello_parent", NULL);
perror("Executing /bin/echo");
return -1;
}
wait(&status);
close(fd[WRITE]);
f=fdopen(fd[READ], "r");
buffer=(char *)malloc(80);
fscanf(f, "%s", buffer);
fclose(f);
printf("Child said: \"%s\"\n", buffer);
free(buffer);
return 0;
}
Chat.Ru рекомендует:
Производители,
товары,
оборудование:
Китай,
Индия,
Япония,
Сингапур
Тайвань