1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

ICP shared memory

Discussion in 'C' started by cavemandave, Nov 20, 2007.

  1. cavemandave

    cavemandave New Member

    Joined:
    Nov 20, 2007
    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    hi people i have been teaching myself C for the last few months and have recently moved onto ICP shared memory. I have with aid developed some simple code that prints out some chars i then wanted to do the same with int but cannont seem to get it to work. http://www.go4expert.com/newthread.php?do=newthread&f=20#


    producer

    Code:
    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <sys/shm.h>
    #include <stdio.h>
    
    #define SHMSZ     27
    
    int main()
    {
        int c;
        int shmid;
        key_t key;
        int *shm, *s;
    
        key = 5678;
    
    
        if ((shmid = shmget(key, SHMSZ, IPC_CREAT | 0666)) < 0) {
            perror("shmget");
            return(1);
        }
    
    
        if ((shm = shmat(shmid, NULL, 0)) == (int *) -1) {
            perror("shmat");
            return(1);
        }
    
        s = shm;
    
        for (c = 10; c <= 20; c++)
            *s++ = c;
        *s = -1;
    
    
        while (*shm != '*')
            sleep(1);
    
        return(0);
    }
    
    
    consumer

    Code:
    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <sys/shm.h>
    #include <stdio.h>
    
    #define SHMSZ     27
    
    int main()
    {
        int shmid;
        key_t key;
        char *shm, *s;
    
    
        key = 5678;
    
    
        if ((shmid = shmget(key, SHMSZ, 0666)) < 0) {
            perror("shmget");
            return(1);
        }
    
    
        if ((shm = shmat(shmid, NULL, 0)) == (char *) -1) {
            perror("shmat");
            return(1);
        }
    
    
        for (s = shm; *s != 0; s++)
            putchar(*s);
        putchar('\n');
    
    
        *shm = '*';
    
        return(0);
    }
    
    :confused: :confused:
     
    Last edited by a moderator: Nov 20, 2007

Share This Page