为什么sem_open在iOS中返回无效指针?
我已经陷入这一困境很长一段时间了。有一个在某些linux版本上工作的遗留代码(C)。我正在尝试将其移植到iOS。我正在iPhone 6.1模拟器上运行该应用程序 我尝试使用信号量,打开一个作为:-为什么sem_open在iOS中返回无效指针?,ios,ios-simulator,semaphore,errno,Ios,Ios Simulator,Semaphore,Errno,我已经陷入这一困境很长一段时间了。有一个在某些linux版本上工作的遗留代码(C)。我正在尝试将其移植到iOS。我正在iPhone 6.1模拟器上运行该应用程序 我尝试使用信号量,打开一个作为:- sem_t * ptr_sem = NULL; ptr_sem = sem_open("robin", O_CREAT , S_IXUSR | S_IRGRP, 0); if (ptr_sem == SEM_FAILED) { printf("\nerror number:%d", err
sem_t * ptr_sem = NULL;
ptr_sem = sem_open("robin", O_CREAT , S_IXUSR | S_IRGRP, 0);
if (ptr_sem == SEM_FAILED) {
printf("\nerror number:%d", errno);
return -1;
} else {
printf("\n semaphore creation errno: %d", errno);
return 0;
}
此代码每次运行时都返回0。值得注意的是,对于每个新的信号量名称,errno第一次为22[EINVAL],对于所有后续的sem_open尝试[即使在关闭模拟器之后],errno设置为13[EACCES]。此外,返回的指针的返回值是无效的内存地址[0x000..5]。我已经检查了上面的一些类似问题——在打开之前尝试取消链接,但对我来说也不起作用
有人能告诉我上面的代码有什么问题吗