GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen Sie ein Linux-Pipeline-Beispiel in c

Versuchen Sie Folgendes:

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

Tatsächlich wird das Programm sofort beendet – tatsächlich wird der Elternprozess vorher beendet die Kinder laufen, weshalb vor "test.c" ein Shell-Prompt steht.

Sie können die Dinge ein wenig verbessern, indem Sie dies in Ihrem übergeordneten Element hinzufügen:

wait(childpid);
wait(childpid2);

wodurch der Elternteil nach beiden Kindern beendet wird.


Linux
  1. So erstellen Sie ein Skript eines Linux-Befehls

  2. So erstellen Sie ein Linux-RPM-Paket

  3. So erstellen Sie einen Swap unter Linux

  4. So erstellen Sie einen Linux-Benutzer mit Ansible

  5. So erstellen Sie Threads in Linux (mit einem C-Beispielprogramm)

So erstellen Sie einen SSH-Alias ​​unter Linux

So erstellen Sie einen Alias ​​unter Linux

So erstellen Sie eine SSH-Schlüssel-Passphrase unter Linux

So erstellen Sie Live-USB von Antergos Linux

So erstellen Sie einen bootfähigen Windows 10-USB-Stick unter Linux

So erstellen Sie Festplattenpartitionen unter Linux