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