sparetime
Messages postés34Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention17 août 2004
-
12 août 2004 à 12:00
sparetime
Messages postés34Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention17 août 2004
-
14 août 2004 à 21:24
main()
{mode_t mode;
int tub;
mkfifo ("fictub",0777);
tub = open("fictub",O_WRONLY); /* ouverture fichier */
write (tub,"hello",5); /* ?criture dans fichier */
close (tub);
exit(0);}
/* Processus lecteur */
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
main()
{int tub;
char buf[11];
tub = open("fictub",O_RDONLY); /* ouverture fichier */
read (tub,buf,5); /* lecture du fichier */
buf[6]=0;
printf("Jai lu %s\n", buf);
close (tub);
exit(0); }
mais qd j'exécute sous linux le process lecteur
le deuxieme code j'ai pas le hello qui s'affiche mais du n'importe quoi et je ne sais pas pourquoi
merci de votre aide
pinderlot
Messages postés59Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention 1 septembre 20041 12 août 2004 à 16:53
il faut initialiser le flux par une fonction du style fflush(stdout)
-----------------------------------------------
Tout ce qui ne tue pas rend plus fort !
sparetime
Messages postés34Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention17 août 2004 14 août 2004 à 21:24
ok merci ca a marché pour ce cas mais qd j'ai voulu essayé le meme truc avec un segment de mémoire partagée j'ai eu le meme pb
voici le code:
/* prod.c */
/*
Ce programme lit une suite de nombres, et effectue le cumul da
variable en mémoire partagée. */
int main(void)
{
key_t cle;
int id;
struct donnees *commun;
struct sigaction a;
cle = ftok(getenv("HOME"), 'a');
if (cle == -1)
abandon("ftok");
id = shmget(cle, sizeof(struct donnees), 0);
if (id == -1) {
switch (errno) {
case ENOENT:
abandon("pas de segment\n");
default:
abandon("shmget");
}
}