J'essaye d'écrire un programme que le processus parent va prendre les arguments à main() et envoyer les caractères dans les un à la fois au processus de l'enfant à travers un tuyau (un appel à écrire pour chaque caractère). Le processus enfant comptera les caractères envoyés par le processus parent et affichera le nombre de caractères qu'il a reçus du parent. Le processus fils ne doit pas utiliser les arguments de main() de quelque façon que ce soit. L'enfant devrait revenir normalement et ne pas laisser le parent tuer l'enfant.processus parent, et un processus enfant
Est-ce que je compte bien les arguments? Suis-je envoyer les arguments dans un à la fois, et suis-je en train de moissonner l'enfant?
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define size = 100;
int main(int argc, char *argv[])
{
int i, count =0;
int c;
int fdest[2]; // for pipe
pid_t pid; //process IDs
char buffer[BUFSIZ];
if (pipe(fdest) < 0) /* attempt to create pipe */
perror("pipe");
if ((pid = fork()) < 0) /* attempt to create child/parent process */
{
perror("fork");
}
/* parent process */
else if (pid > 0) {
close(fdest[0]);
for (i=1; i < argc; ++i)
{
for (c=0; c < strlen(argv[i]); ++c) {
write(fdest[1], &argv[i][c], 1);
}
}
close(fdest[1]);
wait(NULL);
exit(0);
} else {
/* child Process */
close(fdest[1]);
while (read(fdest[0], &buffer, 1) > 0)
{
count++;
}
printf("\nchild: counted %d characters\n", count);
}
wait(NULL);
exit(0);
}
Il semble que vous avez déjà posté cette question. Peut-être pourriez-vous expliquer la différence entre cette question et la précédente: http://stackoverflow.com/questions/2390868/passing-command-line-arguments-to-a-child-process-and-count-them –
la différence semble être les restrictions sur l'écriture d'un personnage à la fois à la pipe, et la lecture d'un caractère à la fois de la pipe. –
Besoin d'un devoir? –