- 论坛徽章:
- 0
|
#include <stdio.h>
#include <string.h>
#include <semaphore.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
sem_t *mutex;
mutex = sem_open ("semtest", O_RDWR|O_CREAT, 0644, 1);
if (mutex == SEM_FAILED)
{
printf("sem_open failed! (%s)\n", strerror(errno));
return -1;
}
printf("sem_open success!\n");
sem_wait(mutex);
printf("locked\n");
sleep(15);
sem_post(mutex);
printf("unlocked\n");
sem_close(mutex);
return 0;
} |
刚才发到c/c++版去了.................
正常情况下我分别运行两个上面的程序,两个程序可以实现先后解锁。但是,当我在第一个启动的程序sleep时把程序kill掉,那么这个信号量就永远不会被还原了,posix的sem没提供像system V的sem一样的UNDO能力么? |
|