Pipe et write(...)

diablo31170 Messages postés 17 Date d'inscription mercredi 15 mai 2013 Statut Membre Dernière intervention 13 juin 2006 - 12 juin 2006 à 21:45
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 - 13 juin 2006 à 09:42
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

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
13 juin 2006 à 00:02
Dans ta fonction write essaye de passer l'adresse de ta varible &sec par exemple
++
0
diablo31170 Messages postés 17 Date d'inscription mercredi 15 mai 2013 Statut Membre Dernière intervention 13 juin 2006
13 juin 2006 à 08:45
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. ++
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
13 juin 2006 à 09:42
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.
0
Rejoignez-nous