/* Passage de messages sysV IPC - l'expéditeur sendmsg_sysV.c est censé fonctionner avec recvmsg_sysV : démarrage de rcvmesg_sysV en arrière-plan, puis démarrage de sendmsg_sysV */ #include #include #include #include #include #include #define BUF 1024 struct my_msg_st { long int my_msg_type; char some_text[BUFSIZ]; }; int main() { int run = 1; struct my_msg_st some_data; int msqid; char buffer[BUF]; msqid = msgget( (key_t)1234, 0666 | IPC_CREAT); if (msqid == -1) { perror("msgget in sendmsg_sysV failed"); exit(EXIT_FAILURE); } while (run) { printf("Enter some text:"); fgets(buffer, BUF, stdin); some_data.my_msg_type = 1; strcpy(some_data.some_text, buffer); if (msgsnd(msqid, &some_data, BUF, 0) == -1) { perror("msgsnd in sendmsg_sysV failed"); exit(EXIT_FAILURE); } if (strncmp(buffer, "end", 3) == 0) { run = 0; } } exit(EXIT_SUCCESS); }