begin process at 2010 02 10 02:59:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

fifos


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

fifos

jeudi 12 août 2004 à 12:00:31 | fifos

sparetime

salut
j'ai voulu essayé ce code
/* Processus ecrivain */
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>

#include <fcntl.h>
#include <string.h>

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
jeudi 12 août 2004 à 16:53:13 | Re : fifos

pinderlot

il faut initialiser le flux par une fonction du style fflush(stdout)
-----------------------------------------------
Tout ce qui ne tue pas rend plus fort !
samedi 14 août 2004 à 21:24:08 | Re : fifos

sparetime

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. */

#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>

void abandon(char message[])
{
perror(message);
exit(EXIT_FAILURE);
}

struct donnees {
int nb;
char *message;
};

int main(void)
{
key_t cle;
int id;
struct donnees *commun;
char *reponse;
int cpt;

cle = ftok(getenv("HOME"), 'a');
if (cle == -1)
abandon("ftok");

id = shmget(cle, sizeof(struct donnees),
IPC_CREAT | IPC_EXCL | 0666);

if (id == -1) {
switch (errno) {
case EEXIST:
abandon("Note: le segment existe déjà\n");
default:
abandon("shmget");
}
}
commun = (struct donnees *) shmat(id, NULL, SHM_R | SHM_W);
if (commun == NULL)
abandon("shmat");

commun->nb = 0;
commun->message =NULL;

while (1) {
fflush(stdout);
printf("+ ");
if (scanf("%s", reponse) != 1)
break;
commun->nb++;
commun->message= reponse;
printf("message %d = %s\n", commun->nb,commun->message);

}
printf("---\n");

if (shmdt((char *) commun) == -1)
abandon("shmdt");

/* suppression segment */
if (shmctl(id, IPC_RMID, NULL) == -1)
abandon("shmctl(remove)");

return EXIT_SUCCESS;
}


/* cons.c */

/*
Ce programme affiche périodiquement le contenu de la
mémoire partagée. Arrêt par Contrôle-C
*/

#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <signal.h>

#define DELAI 2

void abandon(char message[])
{
perror(message);
exit(EXIT_FAILURE);
}

struct donnees {
int nb;
char *message;
};

int continuer_boucle = 1;

void arreter_boucle(int signal)
{
continuer_boucle = 0;
}

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");
}
}

commun = (struct donnees *) shmat(id, NULL, SHM_R);
if (commun == NULL)
abandon("shmat");

continuer_boucle = 1;

a.sa_handler = arreter_boucle;
sigemptyset(&a.sa_mask);
a.sa_flags = 0;
sigaction(SIGINT, &a, NULL);

while (continuer_boucle) {
sleep(DELAI);
fflush(stdout);
printf("message %d= %s\n", commun->nb, commun->message);
}

printf("---\n");
if (shmdt((char *) commun) == -1)
abandon("shmdt");

return EXIT_SUCCESS;


}



Cette discussion est classée dans : fichier, include, buf, tub, fictub


Répondre à ce message

Sujets en rapport avec ce message

comment distinguer entre fichier et repértoire! [ par almousafer ] salut tlm Je viens d'ecrire une fonction qui parcours le répertoire passé en argument et liste son contenu (merci à Fred), mais il reste encore un pb, Bug identificateur introuvable ? [ par FeelCode ] hello j'ai une erreur qulque peux bizzard, voici le rapport du compilateur Visual studio 2005 ------ Début de la génération : Projet : ConsolC, Confi ouverture d'un fichier txt sur visualC++ [ par drcmomo ] Bonjour s'il vous plait aidez moi je dois ouvrir un fichier txt sur visual mon programme n'arrive pas a ouvrir le fichier. <SPAN style="F fichier include [ par deutant ] le code k j avai marchait normalement, mnt il me sort tt le tps une erreur du type:"fatal error C1083: Impossible d'ouvrir le fichier include : 'stdaf Creation d'un fichier et son attribut [ par raidentr ] Voilà mon code qui me permet de copier un fichier en mode binaire vers un autre fichier, Ca fonctionne, mais le blem est que le fichier créé vérouillé Pb de majuscule à modifier sur un fichier [ par lacharlottinne ] Je voudrai convertir le text de mon fichier tout en minuscule .. quelqu'un peut m'aider ? voici le code #include #include #include #include #includ Lecture d'un fichier et affichage de balises [ par SpiritAnghell ] Bonjour;Le programme suivant est censé extraire les balises d'un fichier xml et les afficher une par une:#include #include #include #include #include Lecture fichier texte en c++ builder ( débutant ) [ par m1b ] Hello, Je sais il y a beaucoup  de post sur la lecture des fichiers textes, je les ai lus mais je n'ai pas réussi à m'en sortir... ( je suis débutant Probleme ASCII et coonversion string vers char (enfin je pense) [ par Leptis ] Salut a tous les pgm qu'il y a sur ce site. Avant tout je tien à vous prévenir que je suis en gros newbie en C.Voila mon problème : je cherche à faire Lire des chiffres avec les virgules [ par Stiko ] salut, j'ai fait un petit programme pour ouvrire un fichier texte qui contient seument des chifres séparées par des points virgules.ce programme lit l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,186 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales