我目前陷入一个问题。

下面是原始代码

sem_t s;
sem_init(&s, 0, 1);


我需要将sem_init替换为sem_open,因为它将在iOS上使用

sem_t s;
sem_open("/s", O_CREAT, 0644, 1); //which will return sem_t*


如何将寄信人地址分配给s?
谢谢

ps。我没有声明sem_t * s,因为这是一个巨大的库,我不会对其进行太多更改

最佳答案

创建一个新的信号量指针,

 sem_t *sptr;


调用sem_open,因为sptr保存地址,

 sptr = sem_open("/s", O_CREAT, 0644, 1);


在预处理器宏下面应该可以解决问题,

 #define s *sptr


使用上述方法,无论何时将s作为参数传递,例如sem_wait(&s)都将变为所需的sem_wait(&*sptr) => sem_wait(sptr)而无需更改sem_t s

10-08 08:49