Retourner au contenu associé (entrée de forum : Communication entre deux processus pere-fils bloquante)
Posté par electro575 le 14 avril 2015 à 16:57. En réponse au message Communication entre deux processus pere-fils bloquante. Évalué à 1.
J'ai remplacé mon code pere.cpp :
char buf [10]; FILE *pp; pp = popen("/home/jo-pc/Bureau/STAGE/Projet_spectro/pipe/test_3/fils", "r"); if (pp == NULL) { perror("popen"); exit(1); } printf("etape1"); while (fgets(buf, sizeof(buf), pp)) fputs(buf, stdout); pclose(pp); printf("etape2"); printf("%s",buf);
Ainsi, j'ai : etape1coucou etape2coucou
Je pense donc que c'est correcte. popen créé un pipe entre les deux fichiers et lit sur l'entrée standard du process fils.
Autre méthode qui marche pour le pere.cpp via ce lien en utilisant les E/S standard : Texte du lien
#include <stdio.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <fcntl.h> #include <sys/stat.h> #include <iostream> #include <string> #include <fstream> using namespace std; //#define BUFSIZ 20 int main() { /* create the pipe */ int fds[2]; if (pipe(fds) == -1) { printf("pipe failed\n"); return 1; } /* create the child */ int pid; if ((pid = fork()) < 0) { printf("fork failed\n"); return 2; } if (pid == 0) { /* child */ //char buffer[20]; close(fds[0]); dup2(fds[1], STDOUT_FILENO); execl("/home/jo-pc/Bureau/STAGE/Projet_spectro/Projet_spectro_1/Test/Acquisition","Acquisition",NULL); close(fds[1]); } else { /* parent */ waitpid(pid,NULL,0); char buffer[1000]; close(fds[1]); dup2(fds[0], STDIN_FILENO); while (read(fds[0], buffer, 1000) != 0) printf("%s\n", buffer); close(fds[0]); //printf("%s", buffer); printf("%s", buffer); printf("%s", buffer); std::cout << buffer << std::endl; } return 0; }
Ca fonctionne bien pour le moment. Je vais continuer d'exploiter ceci. Je fairais un retour. Merci beaucoup
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: revoir l'enoncé et choisir ce qui va bien
Posté par electro575 . En réponse au message Communication entre deux processus pere-fils bloquante. Évalué à 1.
J'ai remplacé mon code pere.cpp :
Ainsi, j'ai :
etape1coucou
etape2coucou
Je pense donc que c'est correcte. popen créé un pipe entre les deux fichiers et lit sur l'entrée standard du process fils.
Autre méthode qui marche pour le pere.cpp via ce lien en utilisant les E/S standard : Texte du lien
Ca fonctionne bien pour le moment. Je vais continuer d'exploiter ceci. Je fairais un retour. Merci beaucoup