阅读背景:

Linux C程序练习(4)进程通信之信号量、共享内存_u014717398的博客

来源:互联网 
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/sem.h>
#include <sys/ipc.h>
#include <sys/types.h>

#define MAX_TEXT 1024


int main(int argc,char **argv){
	int semid=0;
	int count=0;
	pid_t pd=0;
	struct sembuf sops;
	
	semid=semget((key_t)12345,3,0666|IPC_CREAT);
	if(semid==-1){
		perror("semget()");
		exit(1);
	}
	printf("Begin fork()\n");
	
	for(count=0;count<3;count++){
		pd=fork();
		if(pd<0){
			perror("fork()");
			exit(1);
		}
		if(pd==0){
			printf("child[%d] creat!\n",getpid());
			
			sops.sem_num=count;
			sops.sem_op=-1;
			sops.sem_flg=0;
			
			if(semop(semid,&sops,1)==-1){
				perror("semop()");
				exit(1);
			}
			
			printf("child [%d] exit!\n",getpid());
			exit(0);
		}
	}
	exit(0);
}#include <stdio.h>
#include <stdlib.h>
#include



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: