//fichier ecrivain.cpp, Patrick TRAU - IPST ULP #include <iostream.h> #include <sys/ipc.h> #include <sys/shm.h> #include <signal.h> main (int argc, char *argv[]) { int id,erreur; pid_t pid; //ou int key_t cle; //ou int char * ad; //ou n_importe_quoi* , il faut simplement qu'on ecrive la meme chose qu'on lit if(argc!=4) { cout<<"Usage "<<argv[0]<<" <cle> <pid> <message>\n"; exit(1); } cle=atoi(argv[1]); id=shmget(cle,1024,0600); //en particulier il n'y a pas IPC_CREAT if(id==-1) {cout<<"pb shmget !\n";exit(2); } ad=(char*)shmat(id,NULL,0); //rend l'adresse de ce qui est dans le shm, pour moi des char if(ad==(char*)-1) {cout<<"pb shmat !\n";exit(3); } strcpy(ad,argv[3]); pid=atoi(argv[2]); erreur=kill(pid,SIGUSR1); //on peut envoyer "kill -USR1 pid" dans un shell if(erreur){cout<<"erreur dans le kill du pid "<<pid;perror("kill");} return 0; }
Patrick
TRAU, ULP - IPST
nov 05