IO线程进程(共享内存)

1、IO线程进程(共享内存)_第1张图片

 逆转的进程

#include 
#include 
#include 
#include 
#include 
#include 
#include 


int main(int argc, const char *argv[])
{
	key_t key=ftok("./",1);
	if(key<0){
		perror("ftok");
		return -1;
	}
	//printf("key=%#x\n",key);
/*	int msqid=msgget(key,IPC_CREAT|0664);{{{
	if(msqid<0){
		perror("msgget");
		return -1;
	}
	printf("msqid=%d\n",msqid);
	system("ipcs -q");*//*}}}*/
	int shmid=shmget(key,32,IPC_CREAT|0664);
	
	if(shmid<0){
		perror("shmget");
		return -1;
	}
	void * shmaddr=shmat(shmid,NULL,0);
	if((void*)-1==shmaddr){
		perror("shmaddr");
		return -1;
	}
	
	int buf[7]={1,2,3,4,5,6,7};
	int *p=(int*)shmaddr;

	int *flag=(int *)shmaddr+7;
	*flag=0;
	int i=0;


	for(i=0;i<7;i++){
		p[i]=buf[i];
	}
	while(1){
		if(*flag==0){
			int temp=0;
			int *start=p;
			int *end=p+6;
			while(start

输出的进程

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
int main(int argc, const char *argv[])
{
	key_t key=ftok("./",1);
	if(key<0){
		perror("ftok");
		return -1;
	}
//	printf("key=%#x\n",key);
/*	int msqid=msgget(key,IPC_CREAT|0664);{{{
	if(msqid<0){
		perror("msgget");
		return -1;
	}
	printf("msqid=%d\n",msqid);
	system("ipcs -q");*//*}}}*/
	int shmid=shmget(key,32,IPC_CREAT|0664);
	
	if(shmid<0){
		perror("shmget");
		return -1;
	}
	void * shmaddr=shmat(shmid,NULL,0);
	if((void*)-1==shmaddr){
		perror("shmaddr");
		return -1;
	}
	
	int buf[7]={1,2,3,4,5,6,7};
	int *p=(int*)shmaddr;
	int *flag=(int *)shmaddr+7;
	int i=0;
	while(1){
		for(i=0;i<7;i++){
			if(*flag==1){
				
				printf("%d",*(p+i));
			}
		}
	*flag=0;
	
		puts("");
		sleep(1);
	}
	if(shmdt(shmaddr)<0){
		perror("shmdt");
		return -1;
	}
	shmctl(shmid,IPC_RMID,NULL);
	system("ipcs -m");
	return 0;
}

IO线程进程(共享内存)_第2张图片

 

 

你可能感兴趣的:(c++,c语言,算法)