#include<stdio.h>
#include<unistd.h>
#include<sys/ipc.h>
#include<sys/sem.h>
#include<stdlib.h>
#include"utili.h"
int main(int argc,char *argv[])
{
key_t sem_key = ftok(argv[1],0xff);
if(sem_key == -1)
{
perror("ftok");
exit(1);
}
int sem_id = semget(sem_key,1,IPC_CREAT|IPC_EXCL|0755);
if(sem_id == -1)
{
perror("semget");
exit(1);
}
printf("create sem ok.\n");
return 0;
}
#include"utili.h"
int main(int argc,char *argv[])
{
key_t sem_key = ftok(argv[1],0xff);
int sem_id = semget(sem_key,0,0);
int val = semctl(sem_id,0,GETVAL);
printf("sem_val = %d\n",val);
return 0;
}
#include"utili.h"
union semun
{
int val;
struct semid_ds *buf;
unsigned short *array;
struct seminfo *__buf;
};
int main(int argc,char *argv[])
{
key_t sem_key = ftok(argv[1],0xff);
int sem_id = semget(sem_key,0,0);
union semun val;
val.val =atoi(argv[2]);
semctl(sem_id,0,SETVAL,val);
return 0;
}
#include"utili.h"
int main(int argc,char *argv[])
{
key_t sem_key = ftok(argv[1],0xff);
int sem_id = semget(sem_key,0,0);
struct sembuf op;
op.sem_num = 0;
op.sem_op = -1;
op.sem_flg = SEM_UNDO;
semop(sem_id,&op,1);
return 0;
}
sem_v.c
#include"utili.h"
int main(int argc,char *argv[])
{
key_t sem_key = ftok(argv[1],0xff);
int sem_id = semget(sem_key,0,0);
struct sembuf op;
op.sem_num = 0;
op.sem_op =1;
op.sem_flg = 0;
semop(sem_id,&op,1);
return 0;
}
#include"utili.h"
int main(int argc,char *argv[])
{
key_t sem_key = ftok(argv[1],0xff);
int sem_id = semget(sem_key,0,0);
int res = semctl(sem_id,0,IPC_RMID);
if(res == -1)
{
printf("remove sem Erroe.\n");
}
else
printf("remove sem Ok.\n");
return 0;
}