当前位置: 技术问答>linux和unix
[请教]msgsnd()返回ENOTTY错误,如何解决?
来源: 互联网 发布时间:2016-03-28
本文导语: 我在程序中使用msgsnd()发送消息,执行后errno=25.通过perror查看错误得到“inappropriate ioctl for device"的提示。对于ENOTTY(即25)错误,有一篇文档指出用于创建消息队列ID的key不能是一个file,必须是一个字符...
我在程序中使用msgsnd()发送消息,执行后errno=25.通过perror查看错误得到“inappropriate ioctl for device"的提示。对于ENOTTY(即25)错误,有一篇文档指出用于创建消息队列ID的key不能是一个file,必须是一个字符设备。由于收发消息的函数都可以正常工作,我想请问一下,这个错误对收发消息有影响么?具体是什么影响?
|
我们来看看man msgsnd中的描述
RETURN VALUE
On failure both functions return -1 with errno indicating the error, otherwise msgsnd() returns 0 and msgrcv() returns the number of
bytes actually copied into the mtext array.
ERRORS
When msgsnd() fails, errno will be set to one among the following values:
result = 2说明函数调用是OK的。
而errno=25并不能说明出问题了,errno只有在函数调用失败(在此函数里即为result = -1),并且明确说明了系统会设置errno值时才有效。
RETURN VALUE
On failure both functions return -1 with errno indicating the error, otherwise msgsnd() returns 0 and msgrcv() returns the number of
bytes actually copied into the mtext array.
ERRORS
When msgsnd() fails, errno will be set to one among the following values:
result = 2说明函数调用是OK的。
而errno=25并不能说明出问题了,errno只有在函数调用失败(在此函数里即为result = -1),并且明确说明了系统会设置errno值时才有效。