GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare un esempio di pipeline Linux in c

Prova questo:

#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;
}

In realtà il programma termina immediatamente — infatti, il processo padre termina prima i bambini eseguono, motivo per cui c'è un prompt della shell prima di "test.c".

Puoi migliorare un po' le cose aggiungendo questo nel tuo genitore:

wait(childpid);
wait(childpid2);

che farà uscire il genitore dopo entrambi i figli.


Linux
  1. Come creare uno script di un comando Linux

  2. Come creare un pacchetto RPM Linux

  3. Come creare uno scambio in Linux

  4. Come creare un utente Linux usando Ansible

  5. Come creare thread in Linux (con un programma di esempio C)

Come creare alias SSH in Linux

Come creare un alias in Linux

Come creare una passphrase chiave SSH in Linux

Come creare USB live di Antergos Linux

Come creare una chiavetta USB avviabile di Windows 10 in Linux

Come creare partizioni del disco su Linux