我是一名有用的助手,可以为您翻译文本。
我正在使用Linux上的GCC编译器和C语言。我有两个进程,并且我想将整数从一个进程传递到另一个进程,即从外部进程传递到中央进程,然后中央进程应该打印它。但我的代码不起作用。有人能告诉我如何纠正它吗?
这是我的代码:
central.c
我收到了"External process exiting"的错误提示,即使外部进程已经终止,中央进程仍在后台运行。
我正在使用Linux上的GCC编译器和C语言。我有两个进程,并且我想将整数从一个进程传递到另一个进程,即从外部进程传递到中央进程,然后中央进程应该打印它。但我的代码不起作用。有人能告诉我如何纠正它吗?
这是我的代码:
central.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");
}
external.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
我收到了"External process exiting"的错误提示,即使外部进程已经终止,中央进程仍在后台运行。
int main(void)
而不是void main(void)
。 - ashgkwd