retour cours
//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;
}




retour cours Patrick TRAU, ULP - IPST nov 05