1*512b5dedSjmc.\" $OpenBSD: sem_open.3,v 1.12 2023/02/11 21:13:56 jmc Exp $ 2a72c0c24Sfgsch.\" 3c104f7ecStedu.\" Copyright (c) 2013 Ted Unangst <tedu@openbsd.org> 42787694aSfgsch.\" 5c104f7ecStedu.\" Permission to use, copy, modify, and distribute this software for any 6c104f7ecStedu.\" purpose with or without fee is hereby granted, provided that the above 7c104f7ecStedu.\" copyright notice and this permission notice appear in all copies. 82787694aSfgsch.\" 9c104f7ecStedu.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10c104f7ecStedu.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11c104f7ecStedu.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12c104f7ecStedu.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13c104f7ecStedu.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14c104f7ecStedu.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15c104f7ecStedu.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 162787694aSfgsch.\" 17*512b5dedSjmc.Dd $Mdocdate: February 11 2023 $ 182787694aSfgsch.Dt SEM_OPEN 3 192787694aSfgsch.Os 202787694aSfgsch.Sh NAME 212787694aSfgsch.Nm sem_open , 222787694aSfgsch.Nm sem_close , 232787694aSfgsch.Nm sem_unlink 24c104f7ecStedu.Nd open and close named semaphores 252787694aSfgsch.Sh SYNOPSIS 2686f9d4cdStedu.In semaphore.h 272787694aSfgsch.Ft sem_t * 282787694aSfgsch.Fn sem_open "const char *name" "int oflag" "..." 292787694aSfgsch.Ft int 302787694aSfgsch.Fn sem_close "sem_t *sem" 312787694aSfgsch.Ft int 322787694aSfgsch.Fn sem_unlink "const char *name" 332787694aSfgsch.Sh DESCRIPTION 342787694aSfgschThe 35cd1cb807Stedu.Fn sem_open 36cd1cb807Stedufunction opens and returns a named semaphore. 37b182382eSjmcThe 38b182382eSjmc.Fn sem_close 39cd1cb807Stedufunction closes a previously opened named semaphore without removing it. 40cd1cb807SteduThe 412787694aSfgsch.Fn sem_unlink 42cd1cb807Stedufunction removes the named semaphore from the system without closing it. 432787694aSfgsch.Sh RETURN VALUES 44c104f7ecSteduOn success, 45c104f7ecStedu.Fn sem_open 46c104f7ecStedureturns a pointer to a semaphore. 47c104f7ecStedu.Fn sem_close 48c104f7ecSteduand 49c104f7ecStedu.Fn sem_unlink 50c104f7ecStedureturn 0 on success. 512787694aSfgsch.Fn sem_open 522787694aSfgschreturns SEM_FAILED and sets 532787694aSfgsch.Va errno 542787694aSfgschto indicate an error. 552787694aSfgsch.Fn sem_close 562787694aSfgschand 572787694aSfgsch.Fn sem_unlink 582787694aSfgschreturn -1 and set 592787694aSfgsch.Va errno 602787694aSfgschto indicate an error. 612787694aSfgsch.Sh ERRORS 62225fecb5SteduIt is an error to call 63225fecb5Stedu.Fn sem_close 64225fecb5Steduwith an unnamed semaphore or to call 65*512b5dedSjmc.Xr sem_destroy 3 66225fecb5Steduwith a named semaphore. 67225fecb5Stedu.Pp 68225fecb5Stedu.Fn sem_open 69225fecb5Stedumay fail if: 702787694aSfgsch.Bl -tag -width Er 71c104f7ecStedu.It Bq Er ENOSPC 729dea82b5SjmcInsufficient memory is available. 73cd1cb807Stedu.It Bq Er EPERM 74cd1cb807SteduAn attempt was made to open a shared semaphore owned by another user. 752787694aSfgsch.El 76225fecb5Stedu.Pp 77225fecb5Stedu.Fn sem_unlink 78225fecb5Stedumay fail for any of the reasons listed in 79225fecb5Stedu.Xr unlink 2 . 809c42db49Sjmc.Sh SEE ALSO 819c42db49Sjmc.Xr sem_destroy 3 , 829c42db49Sjmc.Xr sem_getvalue 3 , 839c42db49Sjmc.Xr sem_init 3 , 849c42db49Sjmc.Xr sem_post 3 , 859c42db49Sjmc.Xr sem_wait 3 862787694aSfgsch.Sh STANDARDS 872787694aSfgsch.Fn sem_open , 882787694aSfgsch.Fn sem_close , 892787694aSfgschand 902787694aSfgsch.Fn sem_unlink 91c104f7ecSteduappear in 922787694aSfgsch.St -p1003.1-96 . 93c104f7ecSteduThis implementation deviates from the standard by permitting less sharing. 94