programmation systeme - C - Programmation
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);
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.
Marsh Posté le 21-02-2007 à 10:15:40
Citation : Le split a été réinventé, vive le split |
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!!!!!