- 論壇徽章:
- 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;
} |
剛才發(fā)到c/c++版去了.................
正常情況下我分別運行兩個上面的程序,兩個程序可以實現(xiàn)先后解鎖。但是,當我在第一個啟動的程序sleep時把程序kill掉,那么這個信號量就永遠不會被還原了,posix的sem沒提供像system V的sem一樣的UNDO能力么? |
|