あなたがセマフォSystem Vのドキュメント(http://man7.org/linux/man-pages/man2/semop.2.html)で見ることができるように次のことを述べている部分があります:セマフォSystem 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点のSOPの位置を実行していますか? sops [0]とsops [1]?
2なぜそうですsops[0].sem_op = 0;
semidの値が0になるのを待ちますか?