Problem About how to use shared posix semaphore

Gavin Atkinson gavin.atkinson at ury.york.ac.uk
Thu Sep 29 06:27:53 PDT 2005


On Thu, 2005-09-29 at 20:47 +0800, Gary Li-126 wrote:
> Hi,
>     I always get the error message:"Operation not permitted" When I use sem_init set pshared argument equal 1. Compiling as : "gcc -o sem_test sem_test.c -lc_r". My freebsd ver is release 5.4 p6.

>From sem_init(3):

A non-zero value for pshared specifies a
shared semaphore that can be used by multiple processes, which this
implementation is not capable of.

I suspect you're asking the impossible.  You could try using a different
threading library, but libc_r won't work:

/usr/src/lib/libc_r/uthread/uthread_sem.c:

_sem_init(sem_t *sem, int pshared, unsigned int value)
{
 [...]
        if (pshared != 0) {
                /*
                 * The user wants a semaphore that can be shared among
                 * processes, which this implementation can't do.  Sounds like a
                 * permissions problem to me (yeah right).
                 */
                errno = EPERM;
                retval = -1;
                goto RETURN;
        }

This return code is documenbted in the sem_init man page:

[EPERM]            Unable to initialize a shared semaphore.

Gavin


More information about the freebsd-stable mailing list