Qui peut m'aider a resoudre un pb sur la gestion des pipes

Résolu
vitocor Messages postés 6 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 21 novembre 2004 - 20 nov. 2004 à 13:17
vitocor Messages postés 6 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 21 novembre 2004 - 21 nov. 2004 à 22:20
voici le sujet

ecrire un prog en C qui simule la commande ls-l/wc-l à l'aide de 2 processus.

merci pour votre aide

bye

12 réponses

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
21 nov. 2004 à 02:15
ah!!!!!!! je croyais pipe pour communiquer entre les processus......bon pour le ls -l, tu regarde les fonctions que je t'ai dis qui te permettront de récuperer ttes les infos nécessaires sur tes fichiers pour simuler la commande, ensuite une fois que tu auras toutes les infos, ca sera juste de la manipulation de tableaux. regarde le man des fonctions données, tu y verras deja plus clair puis reviens poser tes questions
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
20 nov. 2004 à 19:34
pour le ls -l, tu fais un proc qui exploite les fonctions suuivantes:
(man 3 plutot que man 2 pour celles la, leur utilisation est plus simple)

opendir pour explorer un repertoire
readdir pour lire le contenu du repertoire
closedir
rewinddir si tu ne referme pas le repertoire: pr revenir au debut
selon le repertoire readlink voir sur quoi pointe un lien

la c'est man 2

stat poura voir un paquet d'infos sur le fichier.

le sujet est si vague que ca? ils te disent pas que dois faire chaque process? pr le wc-l je peux pas t'aider tant que tu me rappelle pas ce que jais wc avec l'option -l.

en epserant que ca t'oriente deja un peu....
vitocor Messages postés 6 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 21 novembre 2004
20 nov. 2004 à 20:44
merci pour ta reponse

en fait

ls-l ; affichage

wc-l ; calcul le nombre de caractere affiché à l'ecran

et la barre entre les deux ets le PIPE

peux tu m'aider a realiser le prog*

je suis perdu

merci
bye
vitocor Messages postés 6 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 21 novembre 2004
21 nov. 2004 à 11:21
salut

en fait j'arrive pas à commencer à demarrer le programme

peux tu m'aider à demarrer le prog

merci

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
21 nov. 2004 à 13:34
tu regarderas la syntaxe qui n'est pas celle la pour les fonctions mais je l'ai pas en tete

int main (int argc, char * argv [])
{
int pfd [2];

if (!Fork())
{
//
//declaration de tes variables genre Dir
close pfd [0];
opendir (argv [1]);

unsigned i = 0;
for ( ; (Dir= readdir()) ; ++i);

rewinddir (argv [1])

const TabSize = i;
char * Tab [i];

//tab [0] devra prendre, a la fin de l'execution la ligne "total truc"for (i 1 ; (Dir readdir()); ++i)
if (!strcmp (Dir.d_name, ".") && !strcmp (Dir.d_name, ".."))
Tab [i] = Dir.d_name;

for (i = 0; i < TabSize; ++i)
{
stat = Tab [i];
//apres pr cette partie pr recuperer les infos, tu te debrouilleras, je vais pas tt te faire
}
for (i = 0; i < TabSize; ++i)
{
ecrire ds un pipe pr communiquer au pere toutes les infos pour qu'il puisse compter, dsl pas envie de le coder, a la rigueur tu devrais faire une struct pr encapsuler tes données, je sais pas si tu peux pas tt simplement utiliser la struct stat, verifie ds le man que ca contient ts les champs voulus
}

}
else
{
fermer le fd en ecriture
lire ds le pipe
compter
afficher comme il faut le nombre de lignes comptées (sans oublier la ligne qui contient "total truc")
}
merci

mais peux tu m'aider a réaliser le prog
je c pas par koi commencer

peux tu m'aider a faire une ebauche de pb

je galere

merci
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
21 nov. 2004 à 14:35
ben c'est ce que je t'ai fait, t'as ici l'algo, la trame et la moitié du code.......

tu fais un processus qui fait un ls -l puis qui communique ce qu'il a fait a l'autre processus, ce processus va alors compter les lignes rendues. j'ai l'impression de t'avoir déjà fait une bonne partie du boulot, alors prend ton man et essaie de coder. c'est pas a moi de faire ton boulot..........surtt que je l'ai déjà beacoup fait. la tu as de quoi commencer
vitocor Messages postés 6 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 21 novembre 2004
21 nov. 2004 à 14:40
merci

c cool

à bientot
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
21 nov. 2004 à 18:08
et au fait en ce qui concerne le wc -l:
dans le processus qui fait le ls -l, tu crée un tableau de char* qui devraient correspondre a ton affichage (n'oublie donc pas les '\n'), puis tu envoie dans un pipe tous les caractères dans un pipe.
dans le processus qui effectue le wc-l, tu récupère tous les caractères de ton pipe, et tu compte le nombre de '\n', ca te donne le nombre de lignes. c'est ce que tu afficheras au final
vitocor Messages postés 6 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 21 novembre 2004
21 nov. 2004 à 18:12
ok mais franchement je suis pommé sur le shell

tu me pas me realiser le prog avec les commentaires à coté

la je tourne en rond c'est un TP ke je dois rendre mardi

et franchement je galere grave

merci de ton aide
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
21 nov. 2004 à 22:03
faut pas pousser mémé ds les orties non plus, c'est pas compliqué, t'as un man sous la main.....et meme si c'est compliqué c'est ton boulot pas le mien, d'autant que le code que je t'ai mis t'as déjà la moitié du code.....
vitocor Messages postés 6 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 21 novembre 2004
21 nov. 2004 à 22:20
desolé

bonne soiree

bye

merci pour ton aide
Rejoignez-nous