linux 信号量

 1 #include <string.h>
 2 #include <pthread.h>
 3 #include <semaphore.h>
 4 #include <signal.h>
 5 
 6 sem_t sem_meng;
 7 
 8 void signalhandler ( int sig)
 9 {
10     sem_post(&sem_meng);
11     printf("caught signal ok\n");
12 }  
13 
14 int main(int argc, const char *argv[])
15 {
16     signal(10,signalhandler);
17     printf("sig reg ok\n");
18     if (sem_init(&sem_meng,0,0)) {
19         perror("sem");
20         printf("failed\n");
21     }
22     printf("waiting\n");
23     sem_wait(&sem_meng);
24     printf("ok\n");
25     return 0;
26 }

 gcc testwait.c -o testwait -lpthread

./testwait

$ ps -e|grep test
18994 pts/1 00:00:00 testwait
$ kill -10 18994

原文地址:https://www.cnblogs.com/mengqingzhong/p/3032705.html