Processus et Tubes 1

Fermé
Spaki Messages postés 38 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 23 septembre 2011 - 17 mars 2010 à 20:46
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 17 mars 2010 à 21:49
Bonjour,
Bonjour,

Je suis debutante en programmation C système. J'ai besoin de votre aide pour résoudre un exo :
ecrire un cat en deux morceaux : le processus père lit le fichier ( donnée en paramètre) et l'écrit dans le tube , tandis que le fils le lit depuis le tube et l'affiche.

J'ai commencé à faire l'exo :

#include<stdio.h>
#include<unistd.h>
#include<assert.h>
#define SIZE 32//taille du tampon
char tmp[SIZE];//tampon

void cat( char * fichier){
pipe(p);
pid_t pidfils;
int fds;
int lus1,ecrits1;
int lus2;

if((pidfils=fork())<0){
perror("fork()\n");
exit(EXIT_FAILURE);
}

if(pidfils!=0){
fds=open(fichier,O_RDONLY);
if(fds<0){
perror("open");
exit(1);
}

while((lus1=read(fds,tmp,SIZE))!=0){
ecrits1=write(p[1],tmp,SIZE);
assert(lus1==ecrits1);
}
close(fds);
close(p[1]);
}
else{

while((lus2=read(p[0],tmp,SIZE))!=0){
printf("%d\n",lus2);
}
close(p[0]);
}
}


Problème: je ne comprends pad pourquoi sous DEV C le programme affiche des erreurs pour les fonctions fork(),... je pense qu'il ne les reconnait pas!
Comment faire , quelqu'un pourrait m'aider !!!!


Merci

6 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
17 mars 2010 à 20:53
Salut,

fork est spécifique à Unix/GNULinux pour windows il faut voir les threads

http://www.siteduzero.com/tutoriel-3-3291-les-threads-et-les-mutex.html
https://franckh.developpez.com/tutoriels/posix/pthreads/
0
Spaki Messages postés 38 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 23 septembre 2011 2
17 mars 2010 à 21:11
Ah ok,

Il faut que j'utilise fork() car on n'a pas vu les threads en courw.
J'ai commencé a faire ce tp à l'école sur linux , je dois le terminer pour demain.
Je n'ai pas installé linux sur mon pc, il faudrait que je le fasse rapidement.

Mais comme je dois rendre ce tp pour demain, quelqu'un pourrait jeter un coup d'oeil sur le code???
Si c correct ou pas.

Merci
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
17 mars 2010 à 21:15
Salut,

Si tu fais un clic sur le mot fork dans mon message tu ira sur un bon tuto concernant le fork.
Pour pouvoir tester ton programme tu peux utiliser un cd live linux, pas besoin d'installer quoi que ce soit.
Il suffit de télécharger un petit linux, par exemple puppylinux qui fait 105 Mo.
Si tu as un bon débit tu peux prendre un Ubuntu qui peut être utilisé en mode live.

0
Spaki Messages postés 38 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 23 septembre 2011 2
17 mars 2010 à 21:26
Si je telecharge puppylinux , je pourrait tester compiler et executer mon programme???
Je n'aurait donc pas installer linux, si j'ai bien compris.

Pour le cd live linux sur ubundu , il faut que je commande , je pense.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
17 mars 2010 à 21:32
Re,

En mode CD Live tu n'installes rien, en revanche tu peux tester, compiler ton code
Si tu veux Ubuntu, tu peux le télécharger directement depuis https://ubuntu.com/
0

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

Posez votre question
Spaki Messages postés 38 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 23 septembre 2011 2
17 mars 2010 à 21:43
Ok,
pour le cd live , if faut que je télecharge la version image CD ubuntu sur un CD vierge????

Mais puppylinux , c quoi ????
Si j'installe puppylinux sur on pc , j'aurais toujours acces a windows???
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
17 mars 2010 à 21:49
Re,

Si tu prends Ubuntu tu n'as plus besoin d'un autre linux.
Si tu prends PuppyLinux pareil.

Il s'agit des deux distribution GNU/Linux

Tu n'installe rien de tout.
Tu télécharges l'image iso, tu graves l'image avec ton logiciel ( regarde ici https://www.commentcamarche.net/faq/3942-graver-une-image-disque-iso-nrg

Ensuite tu boote ton pc avec le cd gravé et tu fais tes tests.
Pour accéder à nouveau sur ton windows il suffira de démarrer le pc.


0