Pipe et write(...)

Signaler
Messages postés
17
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
13 juin 2006
-
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
-
Salut à tous,


Comme son nom l'indique, je suis en train de faire de la communication entre 2 processus père et fils.


Avant d'évoquer mon problème, je vais vous présenter un bout de mon source :


<meta http-equiv= "Content-Type" content="text/html; charset=UTF-8" />
<meta name="Generator" content="Kate, the KDE Advanced Text Editor" />

int sec =0;
char buff[256];

int pipefd[2],pid;
int pipe( pipefd[2]);

    pid = fork();

     switch (pid){



            case0 :



                    sec = 3200;


                    close(pipefd[0]);

                    write(pipefd[1],(constvoid *)sec,7);




            default :



                       pere();


        }





En règle, dans la fonction write(), on lui passe les paramètres suivants : write(pipefd[1],"texte",taille en octet).


Donc mon problème est le suivant :


Au lieux de passer un "texte", peut on passe en paramètre des
variables de type int, string et float comme mon source? si oui comment
faire car mon source ne marche pas car le cast ou transtypage ne marche
pas.





Merci a vous tous pour vos réponses futures et à bientôt.

3 réponses

Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
18
Dans ta fonction write essaye de passer l'adresse de ta varible &sec par exemple
++
Messages postés
17
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
13 juin 2006

J'ai essayé write(pipefd[1],&sec,4) et write(pipefd[1],(const
void*)&sec,4) : cela ne marche pas, car la fonction pere fait un
read(pipefd[0],buff,4) et doit afficher.

Merci de ta réponse et à bientôt. ++
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
9
Tu utilise les fonctions atoi et itoa pour convertir un nombre en char* et un char* en nombre.

int atoi(const char*) ==> Renvoie le nombre dans la chaine de caractères
char* itoa(char*, int, int) ==> Met dans le buffer(1er paramètre) le nombre(2eme param) en base indiquée dans le 3eme param.