生产者源码: #include<unistd.h> #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> #include <errno.h> void init();//initlization semaphore void del();//delete semaphore int sem_id; int main(int argc, char *argv[]) { struct sembuf sops[2]; /*set operate way for semaphore*/ sops[0].sem_num = 0; sops[0].sem_op = 1; sops[0].sem_flg = 0; sops[1].sem_num = 1; sops[1].sem_op = -1; sops[1].sem_flg = 0; init(); printf("this is a productor/n"); while(1) { printf("/n/nbefore produce/n"); printf("productor number is %d/n", semctl(sem_id, 0, GETVAL)); printf("space number is %d/n", semctl(sem_id, 1, GETVAL)); semop(sem_id, (struct sembuf*)&sops[1], 1); printf("now producing ...../n"); semop(sem_id, (struct sembuf*)&sops[0]