Я использую semget(), чтобы получить семафор, и инициализировать его VAL до 0, тогда я хочу ждать его с помощью semop(), но он напрямую возвращается. (Другой процесс разработан, чтобы получить SEM и освободить его после некоторых операций)linux семафор, может сам процесс блокировать?
Но если я получаю 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);
Как создать семафор? можете ли вы показать какой-то код? – Simone 2010-12-16 08:13:23