GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer un exemple de pipeline Linux en c

Essayez ceci :

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>

int main(int argc, char** argv)
{
 int pipefd[2];
 int childpid,childpid2;
 char* cmd[3]={"ls",NULL,NULL};
 char* cmd2[3]={"grep",".c",NULL};
 pipe(pipefd);
 if(childpid=fork()){
   //parent
   close(pipefd[1]);
   dup2(pipefd[0],STDIN_FILENO);
   execvp("grep",cmd2);
 }else{  
   //child
   //write
   close(pipefd[0]);
   dup2(pipefd[1],STDOUT_FILENO);
   execvp("ls", cmd);
 }
 return 0;
}

En fait, le programme se termine immédiatement — en fait, le processus parent se termine avant les enfants s'exécutent, c'est pourquoi il y a une invite du shell avant "test.c".

Vous pouvez améliorer un peu les choses en ajoutant ceci dans votre parent :

wait(childpid);
wait(childpid2);

qui fera sortir le parent après les deux enfants.


Linux
  1. Comment créer un script d'une commande Linux

  2. Comment créer un package RPM Linux

  3. Comment créer un swap sous Linux

  4. Comment créer un fichier d'échange sous Linux

  5. Comment créer un utilisateur Linux avec Ansible

Comment créer un alias SSH sous Linux

Comment créer un alias sous Linux

Comment créer une phrase de passe de clé SSH sous Linux

Comment créer une clé USB en direct d'Antergos Linux

Comment créer une clé USB bootable Windows 10 sous Linux

Comment créer des partitions de disque sous Linux