c语言问题
你好,就是可以编译但是运行就报错get err:No such file or directory是什么原因#include <unistd.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct msgbuf
{
long type;
char data;
};
main()
{
key_t key;
int msgid;
int i;
struct msgbuf msg;
//1创建消息队列
key=ftok(".",200);
if(key==-1) printf("ftok err:%m\n"),exit(-1);
msgid=msgget(key,0/*IPC_CREAT|IPC_EXCL|0666*/);
if(msgid==-1)printf("get err:%m\n"),exit(-1);
//2构造消息
//3发送消息
for(i=1;i<=10;i++)
{
bzero(msg.data,sizeof(msg.data));
msg.type=1;
sprintf(msg.data,"MessageI:%d",i);
msgsnd(msgid,&msg,sizeof(msg.data),0);
}
for(i=1;i<=10;i++)
{
bzero(msg.data,sizeof(msg.data));
msg.type=2;
sprintf(msg.data,"MessageII:%d",i);
msgsnd(msgid,&msg,sizeof(msg.data),0);
}
//4删除队列
//msgctl(msgid,IPC_RMID,0);
}
#include <sys/ipc.h>
#include <sys/msg.h>
你再查一下头文件,Dev编译后无法找到头文件。 #include <unistd.h>
#include <sys/ipc.h>
#include <sys/msg.h>
這幾個都是linux下的東西,如果你在linux下編譯應該不會有問題
如果你在windows 下編譯,可能要尋找替代方案
比如unistd.h,可以參考
https://blog.csdn.net/yebufan/article/details/5846394
ipc.h
https://github.com/git-for-windows/git-sdk-64/blob/master/usr/include/cygwin/ipc.h
msg.h
https://code.woboq.org/gcc/include/sys/msg.h.html
PS.不保證所有訊息都正確,但希望有幫助到你 是linuxcentos系统下编译的;编译的了,但是不能运行, Mr-墨云 发表于 2020-2-26 00:04
#include
#include
你再查一下头文件,Dev编译后无法找到头文件。
我就是编译可以通过,但是运行不了,运行就报错get err:No such file or directory
msgid=msgget(key,0/*IPC_CREAT|IPC_EXCL|0666*/);
if(msgid==-1)printf("get err:%m\n"),exit(-1);
抱歉,前面眼花,誤以為是編譯錯誤,鬧了一個大紅臉,請見諒!
重新看了一遍,問題出在msgget
第二個參數設為0,表示:取消息隊列標識符,但此時尚未創建,所以會報錯
(即設為0只能存取已存在的,其他情況要搭配其他參數來使用,類似你註解掉的部分)
可參考
https://dulishu.top/systemv-msgget/ absman1972 发表于 2020-3-1 23:31
msgid=msgget(key,0/*IPC_CREAT|IPC_EXCL|0666*/);
if(msgid==-1)printf("get err: ...
谢谢,以解决
页:
[1]