Linux 进程间通信-信号量通信进程同步实例
陈志峰
(苏州经贸职业技术学院)
摘 要:本文介绍了信号量通信进程同步实例程序。
关键词:进程,通信,实例
进程同步实例程序:
本程序,用fork创建了一个子进程,通过信号量来控制父进程和子进程的执行顺序,给信号量赋
初值0,那么当某个进程对其进行p操作时,就会阻塞,而另一个进程进行了v操作,该进程才能继续
执行,从而实现了进程的同步控制。
#include<sys/types.h>
#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
#include<sys/ipc.h>
#include<sys/sem.h>
#dene DELAY_TIME 2
union semun{
int val;
struct semid_ds *buf;
unsigned short int *array;
struct seminfo *__buf;
};
int init_sem(int sem_id,int init_value)
{
union semun sem_union;
sem_union.val=init_value;
if(semctl(sem_id,0,SETVAL,sem_union)==-1)
{
perror("Initialize semaphore");
return -1;
}
return 0;
}
int del_sem(int sem_id)
{
union semun sem_union;
if(semctl(sem_id,0,IPC_RMID,sem_union)==-1)
1 / 3