如何确定类unix操作系统(例如Mac /Linux2.6)是否实现了POSIX信号量?我可以使用sysconf来获取它吗?#include <unistd.h>我只想在Linux/Mac OS X中使用POSIX信号量api(sem_init/sem_wait/sem_post我看到Linux 2.6和MAC OS X 10.6.6都实现了POSIX信号量</
我试图弄清楚如何在Linux0.01中实现一组系统调用,这些调用提供信号量(无需繁忙等待)模块。我希望这些系统调用允许进程请求一个新的信号量,并将其用于进程同步。(系统调用#110) int sema_request(int值):如果成功,此函数将返回一个新的信号量,否则返回-1。新的信号量被初始化为"value“。您的实现应该在整个操作系统中支持至少10个不同的信号量。(系统调用#111) int sema_wait(int s):此函数在
Linux sem_destroy()文档说:
在释放未命名信号量所在的内存之前,应使用sem_destroy()销毁未命名信号量。如果不这样做,可能会导致某些实现上的资源泄漏。我有一个进程负责在共享内存( mmaped文件)上创建和销毁信号量,如何避免异常终止条件下的资源泄漏?在Linux上,如果在调用sem_destroy()之前删除mmaped文件,是否有任何资源泄漏?什么资源?