programmation systeme

programmation systeme - C - Programmation

Marsh Posté le 21-02-2007 à 09:10:57    

Bonjour,
je dois écrirer un programme dont un "main" ouvre un fichier, y écrit "bonjour" puis crée un processus fils. après cette création, les deux processus vont écrire dans ce fichier : le père écrira "je suis le père de pid..." le fils écrira : "je suis le fils de pid ... et de père de pid ..."
Synchroniser les écritures en privilégiant le fils avant le père.
Faites une deuxième version de ce programme qui fait apparaitre un phénomène d'entrrelacement sur du code correspondant à plusieurs écritures (writre()) et lectures (read()) dans le fichier
 
Voila le code que l'on a écrit mais linux nous envoie un segmentation fault!!!!!
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
 
int main (void){
 
int pid,d, fils, pere1, pere2;
char* buffer, buffer2[30], buffer3[30];
d=open ("f1.txt",O_RDWR,0700);
if(d>0){
sprintf(buffer, "buongiorno!\n" );
write(d,buffer,8);
}
pid = fork();
if (pid == -1)
 printf("le fork() a échoué \n" );
if (pid ==0){
 fils = getpid();
 sprintf(buffer2,"je suis le fils de PID : %d\n", fils);
 write(d, buffer2, strlen(buffer2));
 }
else
 {
 pere2 = getpid();
 sprintf(buffer3,"Je suis le père de PID : %d\n", pere2);
 write(d, buffer3, strlen(buffer3));
 wait(0);
 }
}
 
merci pour ceux qui pourront aider!!!!! :)

Reply

Marsh Posté le 21-02-2007 à 09:10:57   

Reply

Marsh Posté le 21-02-2007 à 09:17:06    

Utilises les balises code ;)

Reply

Marsh Posté le 21-02-2007 à 09:35:13    

Oui, mais qu'est qu'une balise code car on n'en a jamais utilisé.
Je voulais aussi savoir si vous ne voyez pas une erreur dans notre code,
L'erreur serait probablement dans la ligne avec :
d=open ("f1.txt",O_RDWR,0700);

Reply

Marsh Posté le 21-02-2007 à 09:42:30    

shinohinata a écrit :

Oui, mais qu'est qu'une balise code car on n'en a jamais utilisé.


Alors tu n'as pas lu les regles du forum avant de poster.  
Caÿ mal.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 21-02-2007 à 10:09:55    

sujet fermé plus besoin d'a

Reply

Marsh Posté le 21-02-2007 à 10:10:09    

ide
réponse trouvée

Reply

Marsh Posté le 21-02-2007 à 10:15:40    

Citation :

Le split a été réinventé, vive le split [:dawa]


Message édité par -ThX- le 21-02-2007 à 10:16:00
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed