bonjour tout le monde,
enfaite j ai un petit programme à réaliser!! programmation C sous Unix
il faut que je fasse une communication entre plusieurs processus qui permettent aux différents utilisateurs de s envoyer des messages format texte!!(en utilisant des tubes nommés)
ceci implique le fait que je dois connecter sur une même machine unix (pas besoin de socket) ces différents utilisateurs!!
j ai essayer d avancer dans le reste du projet mais j arrive toujours pas à faire la connexion!! donc j arrive toujours pas à vérifier si mon programme marche ou pas!!!
j ai fait quelques recherches!!
enfaite j ai essayé ça comme truc juste pour la connexion:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 //je crée mon fifo directement dans le shell: $mkfifo -m 0666 monfifo //je donne au groupe l accès d'écriture et d'exécution: $chmod g+rw monfifo int main(int argc,char**argv[]) { system(./HOME); if(nb=fork())<0) {perror("erreur fork()"); exit(1); } if(nb==0){ /*creation d un tube pour un utilisateur*/ g=getpid(); c=getenv("user"); printf("l'utilisateur est: %s",c) if (mknod ("../c/fifo", S_IFIFO | 0666,0) == -1) { perror ("erreur de création fifo"); exit (1);} system(chmod g+w); if(mkfifo(ffils=open("../c/fifo",O_WRONLY))==-1)||(mkfifo(fpere=open("monfifo",O_RDONLY,O_NONBLOCK)))==-1{ perror("erreur d ouverture "); exit(1); } } while(1){ while(buf[s_buf]=getchar()!='\n'){ write(ffils,buf,160*sizeof(char)); read(fpere,buf,160*sizeof(char)); }
et donc a chaque fois que quelqu'un lance mon programme je prends son nom pour peut être après l utiliser pour créer un tube pour l'utilisateur en question
j en suis pas sûre!!
autrement comment je fais pour créer un fifo pour chacun des utilisateurs?
et comment je fais pour affecter getenv a une variable que je pourrai utiliser après?
si vous pouvez m aider svp
Partager