代码如下所示,两边对照查看程序!(左图为先运行进程 右图为后运行进程)
运行的效果就是:当左边的进程检测到EOF,释放资源V操作之后,右边的进程会迅速的执行对应的printf的操作!
所有代码文件结构如下:
sem_a.c(左边进程的代码,编译方式:gcc sem_a.c sempv.c -o sem_a)
#include <stdio.h> #include "sempv.h" int main(int *argc, char *argv[]) { key_t my_key = 1234; int my_sem; my_sem = Create_sem(my_key,1,0666|IPC_CREAT); printf("setting val...\n"); init_sem(my_sem,0,1); printf("p...\n"); P(my_sem); while(getchar() != EOF); V(my_sem); sleep(5); del_sem(my_sem); return 0; }