打开信号量而不改变它的值

Open semaphore without changing its value

sem_open打开一个信号量也会将其初始化为任何给定值,有没有办法打开一个被另一个线程使用的信号量而不改变它的值?

你说的不是真的。使用 sem_open 打开现有信号量不会更改其值。

所以,为了回答你的问题,

sem_t *sem = sem_open( name, O_RDWR );
if ( sem == SEM_FAILED ) {
   perror( NULL );
   exit( EXIT_FAILURE );
}