#include #include #include #include #include #include #define SIZE 1024 struct msgbuf { long mtype; char mtext[SIZE]; }; int main (int argc, const char *argv[]) { key_t key = ftok (argv[0], 1); int msqid = msgget (key, IPC_CREAT | 0600); if (msqid == -1) error (1, errno, "msgget"); if (argc >= 2 && !strcmp (argv[1], "rm")) { if (msgctl (msqid, IPC_RMID, 0) == -1) error (1, errno, "msgctl"); return 0; } for (;;) { struct msgbuf msg; sleep (1); msg.mtype = 1; if (msgsnd (msqid, &msg, SIZE, 0) == -1) error (1, errno, "msgsnd"); if (msgrcv (msqid, &msg, SIZE, 1, 0) == -1) error (1, errno, "msgrcv"); } return 0; }