BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #27247同步于 2008/6/23
SoftDesign机器人发帖

发个信号量的用法

redfox
2008/6/23镜像同步0 回复
#include <sys/sem.h> #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <errno.h> #include <time.h> int main() { union semun { int val; struct semid_ds *buf; ushort *array; }; key_t semkey; union semun arg; struct sembuf wait={0, -1, SEM_UNDO}, signal={0, 1, SEM_UNDO}; int flag; int semid; if((semkey = ftok("/tmp", 'a')) == (key_t)-1) { perror("IPC error: ftok"); return 0; } flag = 1; if((semid = semget(semkey, 1, 0666 | IPC_CREAT | IPC_EXCL)) < 0) { if((semid = semget(semkey, 1, 0)) == -1) { perror("semget error"); return 0; } flag = 0; } if(flag) { arg.val = 1; if(semctl(semid, 0, SETVAL, arg) == -1) { perror("semctl error"); return 0; } } if(semop(semid, &wait, 1) == -1) { perror("semop wait error"); return 0; } printf("i am runing\n"); sleep(10); printf("i finishedi\n"); /* */ if(semop(semid, &signal, 1) == -1) { perror("semop signal error"); return 0; } /* if(semctl(semid, 0, IPC_RMID, signal) == -1) { perror("semctl delete error"); return 0; } */ return 0; } 纯属娱乐,探讨。轻拍。
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。