/***************************************************
* 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/shm.h>
extern void exit();
extern void perror();
main()
{
key_t key;
int shmflg;
int shmid;
int size;
(void) fprintf(stderr, "All numeric input is expected to 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");
/* Get the key. */
(void) fprintf(stderr, "IPC_PRIVATE == %#lxn", IPC_PRIVATE);
(void) fprintf(stderr, "Enter key: ");
(void) scanf("%li", &key);
/* Get the size of the segment. */
(void) fprintf(stderr, "Enter size: ");
(void) scanf("%i", &size);
/* Get the shmflg value. */
(void) fprintf(stderr, "Expected flags for the shmflg argument are:n");
(void) fprintf(stderr, "tIPC_CREAT = t%#8.8on",IPC_CREAT);
(void) fprintf(stderr, "tIPC_EXCL = t%#8.8on", IPC_EXCL);
(void) fprintf(stderr, "towner read =t%#8.8on", 0400);
(void) fprintf(stderr, "towner write =t%#8.8on", 0200);
(void) fprintf(stderr, "tgroup read =t%#8.8on", 040);
(void) fprintf(stderr, "tgroup write =t%#8.8on", 020);
(void) fprintf(stderr, "tother read =t%#8.8on", 04);
(void) fprintf(stderr, "tother write =t%#8.8on", 02);
(void) fprintf(stderr, "Enter shmflg: ");
(void) scanf("%i", &shmflg);
/* Make the call and report the results. */
(void) fprintf(stderr, "shmget: Calling shmget(%#lx, %d, %#o)n", key, size, shmflg);
if ((shmid = shmget (key, size, shmflg)) == -1) {
perror("shmget: shmget failed");
exit(1);
}
else {
(void) fprintf(stderr, "shmget: shmget returned %dn", shmid);
exit(0);
}
} |
|