【发布时间】:2011-05-26 09:44:39
【问题描述】:
我使用semget()获取一个semaphore,并将其VAL初始化为0,然后我想用semop()等待它,但它直接返回。 (另外一个流程是为了获取SEM,经过一些操作后释放)
但是如果我得到一个 SEM 并在一个进程中将它的 VAL 初始化为 0,然后在另一个进程中等待它,它就可以工作。
这是否意味着一个进程不能阻塞自己?
谢谢!!!
像这样:
int semid = semget(IPC_PRIVATE, 1, IPC_CREAT);
union semun su;
su.val = 0;
semctl(semid, 1, SETVAL, su);
struct sembuf sb;
sb.sem_num = 0;
sb.sem_op = -1;
sb.sem_flg = 0;
semop(semid, &sb, 1);
【问题讨论】:
-
如何创建信号量?你能显示一些代码吗?
标签: c linux unix ipc semaphore