linux互斥操作——信号量

简单的互斥操作:

#include<stdio.h>

#include<unistd.h>

#include<stdlib.h>

#include<stdlib.h>

#include<sys/types.h>

#include <sys/ipc.h>

#include<sys/sem.h>



int p(int sem_id)

{

	struct sembuf sb;

	sb.sem_num=0;

	sb.sem_op=-1;

	sb.sem_flg=SEM_UNDO;

	if(semop(sem_id,&sb,1)==-1)

		return 0;

	return 1;

}

int v(int sem_id)

{

	struct sembuf sb;

	sb.sem_num=0;

	sb.sem_op=1;

	sb.sem_flg=SEM_UNDO;

	if(semop(sem_id,&sb,1)==-1)

		return 0;

	return 1;

}



int main()

{

	int sem_id;

	if((sem_id=semget(IPC_PRIVATE,1,0)) == -1)

		exit(-1);

	p(sem_id);

                //do something

	v(sem_id);



}

 

你可能感兴趣的:(linux)