Quando compilo un programma usando la funzione POSIX sem_init()
, ricevo un avviso di compilazione (errore perché di solito uso -Werror
) che la funzione è stata deprecata quando compilo su Mac OS X 10.10.1 (Yosemite) con GCC 4.9.1 o la versione di Clang (Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
) da XCode 6.1.1. Una rapida occhiata a /usr/include/sys/semaphore.h
mostra che la funzione ha effettivamente un tag __deprecated
dopo la sua dichiarazione, così come sem_getvalue()
e sem_destroy()
.Perché sem_init(), sem_getvalue(), sem_destroy() sono deprecati su Mac OS X e cosa li sostituisce?
Domande:
dato che non v'è alcun accenno di disapprovazione nella specifica POSIX, perché sono queste tre funzioni individuate come deprecato su Mac OS X?
Dato che sono deprecati, qual è la sostituzione e perché è la sostituzione preferita?
(ho controllato Ask Different prima, non ci sono domande taggati c e senza domande che chiedono sul sistema deprecato chiamate - solo programmi.)
correlati a http://stackoverflow.com/questions/1413785/sem-init-on-os-x e http://stackoverflow.com/questions/16655153/sem-getvalue-dysfunctionality-in-mac-os -xc/16655541 # 16655541? –
@IskarJarak: Il primo di questi due sembra coprire il mio problema in pratica, sebbene ci sia ancora "perché" (come in "perché Mac OS X non supporta i semafori senza nome?) Che non è risolto. Poiché il mio codice non era in fase di compilazione, non stavo arrivando al punto di un errore ENOSYS dalla funzione 'sem_init()' –
Un'altra fonte forse forse più canonica di una risposta può essere trovata tramite https: // devforums .Mela.com nella sottosezione "Core OS" di "Mac Development". –