[ create a new paste ] login | about

Link: http://codepad.org/4MXCzn9o    [ raw code | fork ]

C, pasted on May 25:
include <stdio.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <unistd.h>
sem_t sem;

void A()
{
        printf("Post first: %d\n", sem_post(&sem));
        perror("sempost");
        sleep(2);
        sem_post(&sem);
}

void B()
{
        printf("Wait first: %d\n", sem_wait(&sem));
        perror("semwait");
        sleep(2);
        sem_post(&sem);
}

int main(int argc, char *argv[])
{
        pid_t ft;

        sem = semget(IPC_PRIVATE, 1, 0666);
        perror("semget");
        if(fork())
        {
                A();
        }
        else
        {
                B();
        }
        sleep(1);
        printf("Done\n");
        semctl(sem, 0, IPC_RMID);
        return(0);
}

/*
*  Output:
*  ~/temp $ ./a.out
*  semget: Undefined error: 0
*  Post first: -1
*  sempost: Bad file descriptor
*  Wait first: -1
*  semwait: Bad file descriptor
*  Done
*  Done
*/


Create a new paste based on this one


Comments: