📄 wait.c
字号:
#include <stdio.h>#include <stdlib.h>#include <semaphore.h>#include <string.h>#include <errno.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>int main(int argc, char **argv){ if (argc < 2) { fprintf(stdout, "Usage: %s <name>\n", argv[0]); exit(1); } sem_t *sem = NULL; if ((sem = sem_open(argv[1], O_RDONLY)) == SEM_FAILED) { fprintf(stderr, "sem_open() failed: %s\n", strerror(errno)); exit(1); } int value; //int sem_getvalue(sem_t *restrict sem, int *restrict sval); sem_getvalue(sem, &value); fprintf(stdout, "value = %d\n", value); //int sem_trywait(sem_t * sem); //int sem_wait(sem_t * sem); if (sem_wait(sem) < 0) { fprintf(stderr, "sem_wait() failed: %s\n", strerror(errno)); sem_close(sem); exit(1); } fprintf(stdout, "[%d]wake up, do something.\n", getpid()); sem_getvalue(sem, &value); fprintf(stdout, "[%d]value = %d\n", getpid(), value); sem_close(sem); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -