::: °­ÁÂ/¼Ò½º/¹®¼­ :::

°­ÁÂ/¼Ò½º/¹®¼­ ¼º°Ý¿¡ ¸ÂÁö ¾Ê´Â ±¤°í,ºñ¹æ,Áú¹®ÀÇ ±ÛÀº Áï½Ã »èÁ¦Çϸç
³»¿ëÀ» º¹»çÇÏ¿© »ç¿ëÇÒ °æ¿ì ¹Ýµå½Ã ÀÌ°÷(http://www.howto.pe.kr)À» Ãâó·Î ¸í½ÃÇÏ¿© ÁÖ¼¼¿ä


Category

  ±è¿µ´ë(2003-03-17 02:42:47, Hit : 9881, Vote : 1704
 [System V IPC] shmctl() function - °øÀ¯¸Þ¸ð¸®

/***************************************************
*   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>
#include   <time.h>

static void   do_shmctl();
extern void   exit();
extern void   perror();

main()
{

        int  cmd;
        int  shmid;
        struct shmid_ds  shmid_ds;
        
        (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 shmid and cmd. */
        (void) fprintf(stderr,"Enter the shmid for the desired segment: ");
        (void) scanf("%i", &shmid);
        
        (void) fprintf(stderr, "Valid shmctl cmd values are:n");
        (void) fprintf(stderr, "tIPC_RMID =t%dn", IPC_RMID);
        (void) fprintf(stderr, "tIPC_SET =t%dn", IPC_SET);
        (void) fprintf(stderr, "tIPC_STAT =t%dn", IPC_STAT);
        (void) fprintf(stderr, "tSHM_LOCK =t%dn", SHM_LOCK);
        (void) fprintf(stderr, "tSHM_UNLOCK =t%dn", SHM_UNLOCK);
        (void) fprintf(stderr, "Enter the desired cmd value: ");
        
        (void) scanf("%i", &cmd);
        
        
        switch (cmd) {

                case IPC_STAT:
                
                             /* Get shared memory segment status. */
                             break;

                case IPC_SET:
                
                             /* Set owner UID and GID and permissions. */
                             /* Get and print current values. */
                             do_shmctl(shmid, IPC_STAT, &shmid_ds);
                
                             /* Set UID, GID, and permissions to be loaded. */
                             (void) fprintf(stderr, "nEnter shm_perm.uid: ");
                             (void) scanf("%hi", &shmid_ds.shm_perm.uid);
                             (void) fprintf(stderr, "Enter shm_perm.gid: ");
                             (void) scanf("%hi", &shmid_ds.shm_perm.gid);
                             (void) fprintf(stderr,"Note: Keep read permission for yourself.n");
                             (void) fprintf(stderr, "Enter shm_perm.mode: ");
                             (void) scanf("%hi", &shmid_ds.shm_perm.mode);
                
                             break;
                
                case IPC_RMID:
                             /* Remove the segment when the last attach point is  detached. */
                             break;
                
                case SHM_LOCK:
                
                             /* Lock the shared memory segment. */
                
                             break;
                
                case SHM_UNLOCK:
                
                             /* Unlock the shared memory segment. */
                
                             break;
                
                default:
                
                             /* Unknown command will be passed to shmctl. */
                
                             break;
                
        }

             do_shmctl(shmid, cmd, &shmid_ds);

             exit(0);

}



static void do_shmctl(shmid, cmd, buf)
int shmid;
int cmd;
struct shmid_ds   *buf;   /* pointer to shared memory data structure */
{
        register int    rtrn;  /* hold area */

        (void) fprintf(stderr, "shmctl Calling shmctl(%d, %d,buf)n",shmid, cmd);

        if (cmd == IPC_SET) {
        
                      (void) fprintf(stderr, "tbuf->shm_perm.uid == %dn", buf->shm_perm.uid);
        
                     (void) fprintf(stderr, "tbuf->shm_perm.gid == %dn", buf->shm_perm.gid);
        
                     (void) fprintf(stderr, "tbuf->shm_perm.mode == %#on",buf->shm_perm.mode);
        
        }
        
        if ((rtrn = shmctl(shmid, cmd, buf)) == -1) {
        
                      perror("shmctl: shmctl failed");
        
                     exit(1);
        
        }
        
        else {
        
                       (void) fprintf(stderr, "shmctl: shmctl returned %dn", rtrn);
        
        }
        
        
        
        if (cmd != IPC_STAT && cmd != IPC_SET)
        
                      return;
        
        
        
        /* Print the current status. */
        
        (void) fprintf(stderr, "nCurrent status:n");
        (void) fprintf(stderr, "tshm_perm.uid = %dn",buf->shm_perm.uid);
        (void) fprintf(stderr, "tshm_perm.gid = %dn",buf->shm_perm.gid);
        (void) fprintf(stderr, "tshm_perm.cuid = %dn",buf->shm_perm.cuid);
        (void) fprintf(stderr, "tshm_perm.cgid = %dn", buf->shm_perm.cgid);
        (void) fprintf(stderr, "tshm_perm.mode = %#on", buf->shm_perm.mode);
        (void) fprintf(stderr, "tshm_perm.key = %#xn", buf->shm_perm.key);
        (void) fprintf(stderr, "tshm_segsz = %dn", buf->shm_segsz);
        (void) fprintf(stderr, "tshm_lpid = %dn", buf->shm_lpid);
        (void) fprintf(stderr, "tshm_cpid = %dn", buf->shm_cpid);
        (void) fprintf(stderr, "tshm_nattch = %dn", buf->shm_nattch);
        (void) fprintf(stderr, "tshm_atime = %s",buf->shm_atime ? ctime(&buf->shm_atime) : "Not Setn");
        (void) fprintf(stderr, "tshm_dtime = %s",buf->shm_dtime ? ctime(&buf->shm_dtime) : "Not Setn");
        (void) fprintf(stderr, "tshm_ctime = %s",ctime(&buf->shm_ctime));
        
}





62   [Unix/Linux] [¼Ò½º] top for SunOS 5.x (Solaris 2.x)  ±è¿µ´ë 2004/02/20 15448 1330
61   [Unix/Linux] [°­ÁÂ] ÀÎÅÚ ¼¾Æ®¸®³ë ¹«¼±·£ Ä«µå: ndiswrapper  ±è¿µ´ë 2004/06/27 12541 2189
60   [Unix/Linux] [POSIX IPC] mq_send() function - ¸Þ¼¼ÁöÅ¥  ±è¿µ´ë 2003/03/17 12400 1704
59   [Unix/Linux] [System V IPC] shmget() function - °øÀ¯¸Þ¸ð¸®  ±è¿µ´ë 2003/03/17 11191 1789
58   [Unix/Linux] [¼Ò½º] top for System V Release 4, Intel or Sparc CPU  ±è¿µ´ë 2004/02/20 11165 1288
57   [Unix/Linux] [Thread] pthread_cond_timedwait() function  ±è¿µ´ë 2003/03/17 11093 1875
56   [Unix/Linux] [Thread] pthread_setschedparam() function  ±è¿µ´ë 2003/03/17 10902 1868
  [Unix/Linux] [System V IPC] shmctl() function - °øÀ¯¸Þ¸ð¸®  ±è¿µ´ë 2003/03/17 9881 1704
54   [Unix/Linux] [°­ÁÂ] Apache + MySQL + PHP4 + Zend Optimizer ¼³Ä¡  ±è¿µ´ë 2003/04/15 8666 1600
53   [Unix/Linux] [°­ÁÂ] À¥·Î±×ºÐ¼®À» À§ÇÑ Webalizer + GDlib + PNGlib + Zlib ¼³Ä¡  ±è¿µ´ë 2003/05/04 8522 1513
52   [Unix/Linux] [System V IPC] msgsnd() function - ¸Þ¼¼ÁöÅ¥  ±è¿µ´ë 2003/03/17 8336 1920
51   [Unix/Linux] [POSIX IPC] mq_receive() function - ¸Þ¼¼ÁöÅ¥  ±è¿µ´ë 2003/03/17 8256 1822
50   [Unix/Linux] [POSIX IPC] »ý»êÀÚ/¼ÒºñÀÚ - ¼¼¸¶Æ÷¾î  ±è¿µ´ë 2003/03/17 8117 5691
49   [Unix/Linux] [¼Ò½º] String Çؽ¬(hash) ÇÔ¼ö  ±è¿µ´ë 2003/07/29 8047 1589
48   [Unix/Linux] [Thread] pthread_cancel() function  ±è¿µ´ë 2003/03/17 8046 3803
47   [Unix/Linux] [Thread] »ý»êÀÚ/¼ÒºñÀÚ 2  ±è¿µ´ë 2003/03/17 8004 1533
46   [Unix/Linux] [Thread] pthread_attr_getschedparam() function  ±è¿µ´ë 2003/03/17 7013 8214
45   [Unix/Linux] [System V IPC] msgrcv() function - ¸Þ¼¼ÁöÅ¥  ±è¿µ´ë 2003/03/17 7011 1695
44   [Unix/Linux] [Thread] Àаí/¾²±â  ±è¿µ´ë 2003/03/17 6829 1529
43   [Unix/Linux] [System V IPC] semget() function - ¼¼¸¶Æ÷¾î  ±è¿µ´ë 2003/03/17 6683 1658

1 [2][3][4]
 

Copyright 1999-2024 Zeroboard / skin by zero