Я использую semget (), чтобы получить семафор, и инициализирую его 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);