⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 几个程序.txt

📁 实用小程序,JAVA的,是上机题,大四了拿出来给大家看看,有用的着的就用
💻 TXT
字号:
共享内存

#include <stdio.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <sys/ipc.h>
#define SHMKEY 75

int shmid,i;
int *addr;

void CLIENT()
 {
   int i;
   shmid=shmget(SHMKEY,1024,0777);
   addr=shmat(shmid,0,0);
   
   for(i=9;i>=0;i--)
      {
        while(*addr!=-1);
	     
        printf("(client)sent\n");
        *addr=i;
      }
   exit(0);
}
void SERVER()
 {
   shmid=shmget(SHMKEY,1024,0777|IPC_CREAT);
   addr=shmat(shmid,0,0); 
   do {
     *addr=-1;
     while(*addr==-1);
	   printf("(server)receive\n");
    } while (*addr);
   shmctl(shmid,IPC_RMID,0);
   exit(0);
}

void main()
{
  while((i=fork())==-1);
   if(!i) SERVER();
  while((i=fork())==-1);
  if(!i) CLIENT();
  wait(0);
  wait(0);
 }

*****************************************************


进程通信-管道

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <signal.h>
//#include <ourhdr.h>
#define MAXLINE 128

int main()
{
	pid_t pid_a,pid_b;
	int status,n,fd[2];
	char line[MAXLINE];

	if(pipe(fd)<0)
		printf("pipe error\n");
	pid_a=fork();
	if(pid_a<0){
		printf("fork error\n");
		exit(0);
	}
	else if(pid_a==0){
		close(fd[0]);
		

		status=write(fd[1],"Child 1 is sending a message!\n",30);
		if(status<0)
			printf("write error 1\n");

		exit(0);
	}
	else{
		pid_b=fork();
		if(pid_b<0){
			printf("fork error\n");
			exit(0);
		}
		else if(pid_b==0){
			close(fd[0]);

			status=write(fd[1],"Child 2 is sending a message!\n",30);
			if(status<0)
				printf("write error 2\n");

			exit(0);
		}
		else{
			close(fd[1]);


			while((n=read(fd[0],line,MAXLINE))>0){
				write(STDOUT_FILENO,line,n);
			}
		}
	}
	return 0;
}

*************************************************

进程通信-消息队列

#include <stdio.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <sys/ipc.h>
#define MSGKEY 75
struct msgform
 {
   long mtype;
   char mtext[1030];
 }msg;

int msgqid,i;

void CLIENT()
 {
   int i;
   msgqid=msgget(MSGKEY,0777);
   for(i=10;i>=1;i--)
      {
        msg.mtype=i;
        printf("(client)sent\n");
        msgsnd(msgqid,&msg,1024,0);
      }
   exit(0);
}
void SERVER()
 {
   msgqid=msgget(MSGKEY,0777|IPC_CREAT);
    do {
      msgrcv(msgqid,&msg,1030,0,0);
        printf("(server)receive\n");
    } while (msg.mtype!=1);
   msgctl(msgqid,IPC_RMID,0);
   exit(0);
}

void main()
{
  while((i=fork())==-1);
   if(!i) SERVER();
  while((i=fork())==-1);
  if(!i) CLIENT();
  wait(0);
  wait(0);
 }

***********************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -