Ich übernehme Befehlszeilenargumente von Eltern zu Kind und zähle sie und drucke sie aus. Meine Frage ist, ob ich nicht sicher bin, ob ich das Kind ernte? Brauche ich nicht einfach ein exit 0 oder muss ich fork erneut aufrufen?
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char *argv[])
{
int length = 0;
int i, n;
int fdest[2]; // for pipe
pid_t pid; // Prozess-IDs
char buffer[BUFSIZ];
if ((pid = fork()) < 0) /* Versuch, Kinder-/Elternprozess zu erstellen */
{
printf("Fehler beim Forken");
}
if (pipe(fdest) < 0) /* Versuch, Pipe zu erstellen */
printf("Fehler bei der Pipe");
/* Elternprozess */
else if (pid > 0) {
close(fdest[0]);
for(i = 1; i < argc; i++) /* Schreiben in die Pipe */
{
write(fdest[1], argv[i], strlen(argv[1]));
}
} else {
/* Kindprozess */
close(fdest[1]);
for(i = 1; i < argc; i++)
{
length +=( strlen(argv[i])); /* Länge der Argumente bestimmen */
}
n = read(fdest[0], buffer, length);
printf("\nKind: %d Zeichen gezählt\n", n);
}
exit(0);
}