Exécuter des pipes en C
Résolu
hauzzl
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
hauzzl Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
hauzzl Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Il m'a été demandé d'effectuer deux exercices qui consistent à:
Écrire une fonction
qui affichera quelque chose comme
et
Écrire une fonction
Exemple :
J'ai à ma disposition ce code ci-dessous pour m'aider à la réalisation de l'exercice:
Le problème est que je ne sais pas par où commencer.
Il m'a été demandé d'effectuer deux exercices qui consistent à:
Écrire une fonction
void execute_pipe(char**argv1,char**argv2)qui prend en argument deux tableaux de chaînes de caractères terminés par NULL, chaque tableau correspondant à une commande avec ses arguments. La fonction exécute les deux commandes en redirigeant la sortie de la première commande sur l’entrée de la seconde. Par exemple, le programme suivant :
int main(){ char *argv1[]= {"ls", "-la", NULL}; char *argv2[]= {"grep", "toto", NULL}; execute_pipe(argv1, argv2); return0; }
qui affichera quelque chose comme
-rw-r--r-- 1 gim users 17 2010-10-08 18:10 toto
et
Écrire une fonction
void execute_pipes(char***argvs)qui permet de chaîner plusieurs commandes. La sortie de la première est redirigée vers l’entrée de la seconde et ainsi de suite.
Exemple :
int main(){ char*argv1[]= {"ls", "-la", NULL}; char*argv2[]= {"grep", "toto", NULL}; char*argv3[]= {"tr", "a-z", "A-Z", NULL}; char**argvs[]= {argv1, argv2, argv3,NULL}; execute_tubes(argvs); return0; }
J'ai à ma disposition ce code ci-dessous pour m'aider à la réalisation de l'exercice:
#include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <errno.h> #include "utils.h" void panic(char *file, int line, char *msg) { fprintf(stderr, "%s:%d: %s\n", file, line, msg); exit(1); } void handle_error(int rc, char *file, int line, char *msg) { if (rc < 0) { fprintf(stderr, "%s:%d: %s: %s\n", file, line, msg, strerror(errno)); exit(1); } } ssize_t write_all(int fd, const void *buf, size_t count) { const char *charbuf = buf; size_t buf_div = 0; while (buf_div < count) { int rc = write(fd, charbuf + buf_div, count - buf_div); if (rc < 0) { return -1; } buf_div += rc; } return buf_div; } ssize_t read_all(int fd, void *buf, size_t count) { char *charbuf = buf; size_t buf_div = 0; while (buf_div < count) { int rc = read(fd, charbuf + buf_div, count - buf_div); if (rc < 0) { return -1; } if (rc == 0) { break; } buf_div += rc; } return buf_div; }
Le problème est que je ne sais pas par où commencer.
A voir également:
- Exécuter des pipes en C
- Executer un programme au demarrage - Guide
- 'Pip' n’est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. ✓ - Forum Javascript
- Comment avoir des pips sur plato - Forum Jeux vidéo
- Commandes executer - Guide
- Executer fichier jar ✓ - Forum Windows