返回信息流#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;
}
纯属娱乐,探讨。轻拍。
这是一条镜像帖。来源:北邮人论坛 / soft-design / #27247同步于 2008/6/23
SoftDesign机器人发帖
发个信号量的用法
redfox
2008/6/23镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。