1.核心概念-进程同步
一组并发进程进行互相合作,互相等待,使得各进程按一定的顺序执行的过程称为进程间的同步。
2.生产者消费者问题
/* producter.c */
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/sem.h>
void main()
{
int fd;
key_t key;
int semid;
struct sembuf sops;
key = ftok("/root",2);
/* 创建信号量 */
semid = semget(key,1,IPC_CREAT);
/* 设置信号量初始值为0 */
semctl(semid,0,SETVAL,0);
/* 创建产品-文件 */
fd = open("./product.txt",O_RDWR|O_CREAT,0775);
/* 休息 */
sleep(20);
/* 向产品文件填充内容 */
write(fd,"the product is finished",23);
close(fd);
/* 释放信号量 */
sops.sem_num = 0;
sops.sem_op = 1;
sops.sem_flg = SEM_UNDO;
semop(semid,&sops,1);
}
/* customer.c */
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
void main()
{
key_t key;
int semid;
struct sembuf sops;
key = ftok("/root",2);
semid = semget(key,1,IPC_CREAT);
/* 获取信号量 */
sops.sem_num = 0;
sops.sem_op = -1;
sops.sem_flg = SEM_UNDO;
semop(semid,&sops,1);
/* 取走产品文件 */
system("cp ./product.txt ./ship/");
}