Siehe auch: fork, exec, pipe, write, close
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main() {
char buffer[50];
pid = fork();
// Gerichtete Kanäle
int fromChild[2], toChild[2];
// Pipes haben 2 Elemente:
// 0 -> Lesen
// 1 -> Schreibem
pipe(fromChild); pipe(toChild);
if(pid == -1) {
// pid = -1 -> Fehler beim Erstellen
return fprintf(stderr, "Error: %s\n", stderror(errno));
}
else if(pid == 0) { // pid = 0 -> Childprozess
// Unnötige Kanäle schließen
close(fromChild[0]); close(toChild[1]);
// Sende Nachricht an Parent (insgesamt 17 Bytes)
write(fromChild[1], "Ich bin das Kind", 17);
}
else {
// pid > 0 -> Parentprozess
close(fromChild[1]); close(toChild[0]);
// Lese Nachriht vom Kind in den Buffer
// Wir wissen hier dass wir 17 bytes empfagen werden
read(fromChild[0], buffer, 17);
// Nachricht ausgeben
printf("%s\n", buffer);
}
return 0;
}