我在 Linux 上使用 C 语言和 GCC 编译器。我有两个进程,我想将整数从一个进程传递到另一个进程,即从外部进程到中央进程,然后中央进程应该打印它。但是我的代码不起作用。谁能告诉我如何纠正它?这是我的代码
中央.c
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<stdio.h>
#define MsgKey 2345
typedef struct data_struct
{
int temp;
}data;
void main(void)
{
data temp_msg;
int msgqid;
if(msgqid=msgget(MsgKey, 0600 | IPC_CREAT)<0)
{
printf("From Central Process: Msg queue failed");
}
msgrcv(msgqid,&temp_msg,sizeof(temp_msg),2,0);
printf("Value = %d\n",temp_msg.temp);
printf("Central process exiting\n");
}
外部.c
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<stdio.h>
#define MsgKey 2345
typedef struct data_struct
{
int temp;
}data;
void main(void)
{
data temp_msg;
int msgqid;
temp_msg.temp=5;
if(msgqid=msgget(MsgKey, 0600 | IPC_CREAT)<0)
{
printf("From External Process: Msg queue failed");
}
if(msgsnd(msgqid,&temp_msg,sizeof(temp_msg),0)<0)
{
printf("Error");
}
printf("External process exiting\n");
}
比我在终端上输入的
gcc -o central central.c
gcc -o external external.c
./central &
./external
我收到了这个“外部进程退出”并且外部进程终止,而中央进程继续在后台运行。