提供给函数 ‘exit’ 的实参太少

来源:百度知道 编辑:UC知道 时间:2024/05/31 15:02:51
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<stdio.h>
#include<stdlib.h>
#define MSGKEY 75
struct msgform
{
long mtype;
char mtext[256];
}msg;
int msgqid;
main()
{
int i,pid,*pint;
extern cleanup();
for(i=0;i<20;i++)
signal(i,cleanup);
msgqid=msgget(MSGKEY,0777|IPC_CREAT);
for(;;)
{
msgrcv(msgqid,&msg,256,1,0);
pint=(int*)msg.mtext;
pid=*pint;
printf("server:receive from pid %d\n",pid);
msg.mtype=pid;
*pint=getpid();
msgsnd(msgqid,&msg,sizeof(int),0);
}
}
cleanup()
{
msgctl(msgqid,IPC_RMID,0);
exit();

错误提示:提供给函数 ‘exit’ 的实参太少
可是改为exit(0)后
能执行,但没有结果

exit的函数原型void exit(int status),您调用它必须填入参数的。

exit用于在程序运行的过程中随时结束程序,exit的参数是返回给操作系统的。这个参数识了应用程序的一些运行信息。
和操作系统有关一般是0为正常退出,非0为非正常退出。非0的数字可以是自己拟定的可以是任意一个整型数字。
通过这个参数用来标识程序是在那一部分退出的。

至于能运行,但是没有结构就和exit没关了,您可以在仔细调试代码。

exit(0);

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

.......
_msg msg;