,你可以在信号系统V文档(http://man7.org/linux/man-pages/man2/semop.2.html)有指出以下部分中看到:信号灯系统V - 执行semop执行
例
下面的代码段使用为semop()自动等待信号0的值 变为零,然后将信号量值 加1。
struct sembuf sops[2]; int semid; /* Code to set semid omitted */ sops[0].sem_num = 0; /* Operate on semaphore 0 */ sops[0].sem_op = 0; /* Wait for value to equal 0 */ sops[0].sem_flg = 0; sops[1].sem_num = 0; /* Operate on semaphore 0 */ sops[1].sem_op = 1; /* Increment value by one */ sops[1].sem_flg = 0; if (semop(semid, sops, 2) == -1) { perror("semop"); exit(EXIT_FAILURE); }
这个例子后,我有几个问题:
1是否(semop(semid, sops, 2) == -1)
执行2个小恩小惠位置? sops [0]和sops [1]?
2-如果是这样,为什么sops[0].sem_op = 0;
等待semid的值等于0?