/***************************************************
* Creat : 2001. 02. 10 (programed by Cori-Young)
* Site: http://www.byoneself.co.kr
* Update :
***************************************************/
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
extern void exit();
extern void perror();
main()
{
key_t key; /* key to pass to semget() */
int semflg; /* semflg to pass to semget() */
int nsems; /* nsems to pass to semget() */
int semid; /* return value from semget() */
(void) fprintf(stderr, "All numeric input must follow C conventions:n");
(void) fprintf(stderr, "t0x... is interpreted as hexadecimal,n");
(void) fprintf(stderr, "t0... is interpreted as octal,n");
(void) fprintf(stderr, "totherwise, decimal.n");
(void) fprintf(stderr, "IPC_PRIVATE == %#lxn", IPC_PRIVATE);
(void) fprintf(stderr, "Enter key: ");
(void) scanf("%li", &key);
(void) fprintf(stderr, "Enter nsems value: ");
(void) scanf("%i", &nsems);
(void) fprintf(stderr, "nExpected flags for semflg are:n");
(void) fprintf(stderr, "tIPC_EXCL = t%#8.8on", IPC_EXCL);
(void) fprintf(stderr, "tIPC_CREAT = t%#8.8on",IPC_CREAT);
(void) fprintf(stderr, "towner read = t%#8.8on", 0400);
(void) fprintf(stderr, "towner alter = t%#8.8on", 0200);
(void) fprintf(stderr, "tgroup read = t%#8.8on", 040);
(void) fprintf(stderr, "tgroup alter = t%#8.8on", 020);
(void) fprintf(stderr, "tother read = t%#8.8on", 04);
(void) fprintf(stderr, "tother alter = t%#8.8on", 02);
(void) fprintf(stderr, "Enter semflg value: ");
(void) scanf("%i", &semflg);
(void) fprintf(stderr, "nsemget: Calling semget(%#lx, %%#o)n",key, nsems, semflg);
if ((semid = semget(key, nsems, semflg| 0666 | IPC_EXCL)) == -1) {
perror("semget: semget failed");
exit(1);
}
else {
(void) fprintf(stderr, "semget: semget succeeded: semid =%dn", semid);
exit(0);
}
} |
|