示例代码:
sem_get(g_semid);
val = cpld_spi_read(fd, reg);
printf(“get val %d\n”, semctl(g_semid, 0, GETVAL, 0)); //get val 0
sleep(20);
sem_put(g_semid);
20秒等待时,用killall杀死进程,用semctl(g_semid, 0, GETVAL, 0)查询信号量的值,马上变成1。
结论:进程退出时,系统会自动释放信号。
示例代码:
sem_get(g_semid);
val = cpld_spi_read(fd, reg);
printf(“get val %d\n”, semctl(g_semid, 0, GETVAL, 0)); //get val 0
sleep(20);
sem_put(g_semid);
20秒等待时,用killall杀死进程,用semctl(g_semid, 0, GETVAL, 0)查询信号量的值,马上变成1。
结论:进程退出时,系统会自动释放信号。