进程通讯.txt

来自「LINUX下使用socket编程」· 文本 代码 · 共 94 行

TXT
94
字号
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#define MSGKEY  75

struct msgform { long mtype;
                 char mtext[256];
               };

main()
{ struct msgform msg;
  int msgid,pid,*pint;

 msgid=msgget(MSGKEY,0777);
 pid=getpid();

 printf("client : pid=%d\n",pid);
 
 pint=(int *)msg.mtext;
 *pint=pid;
 msg.mtype=1;

 msgsnd(msgid,&msg,sizeof(int),0);
 msgrcv(msgid,&msg,256,pid,0);
 
 printf("client: receive from pid %d \n",*pint);

 }

-------------------------------------------------
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#define MSGKEY  75

struct msgform { long mtype;
                 char mtext[256];
               };

int msgid;

main()
{ struct msgform msg;
  int pid,*pint;
/*  extern cleanup();*/

 msgid=msgget(MSGKEY,0777|IPC_CREAT);

 printf("server : pid=%d\n",pid);
 
 for(;;)
 {
  msgrcv(msgid,&msg,256,1,0);
  pint=(int *)msg.mtext;
  pid=*pint;
  printf("server: receive from pid %d \n",pid);
  msg.mtype=pid;
  
  *pint=getpid();
  msgsnd(msgid,&msg,sizeof(int),0);
  }
 
 }

--------------------------------------------------
#include <sigmal.h>
main()
{
 void catchint();
 int i;

 signal(SIGINT,catchint);
 for(i=1;i<5;i++)
  { printf("sleep call #%d\n",i);
    sleep(1);
   }

  printf("Exiting.\n");
  exit(0);
}

void catchint(signo)
int signo;
{
 /*signal(SIGINT,SIG_IGN);*/
 printf("catchint: signo=%d\n",signo);
 /*signal(SIGINT,catchint);*/
}

 
 


⌨️ 快捷键说明

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