perl – “不适当的ioctl设备”

前端之家收集整理的这篇文章主要介绍了perl – “不适当的ioctl设备”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个在AIX框中运行的Perl脚本。

该脚本尝试从某个目录打开一个文件,它无法读取该文件,因为文件没有读取权限,但我得到一个不同的错误,说不适当的ioctl设备。

应该不应该说类似没有文件的读取权限或类似的东西?

这不适当的ioctl设备消息是什么意思?

我该如何解决

编辑:这是我发现,当我做strace。

open("/local/logs/xxx/xxxxServer.log",O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE,0666) = 4 _llseek(4,[77146],SEEK_END) = 0
ioctl(4,SNDCTL_TMR_TIMEBASE or TCGETS,0xbffc14f8) = -1 ENOTTY 
    (Inappropriate ioctl for  device)

解决方法

很可能这意味着开放没有失败。

当Perl打开一个文件时,它通过对其发出TCGETS ioctl来检查该文件是否是TTY(以便它可以回答-T $ fh filetest操作符)。如果文件是常规文件而不是tty,则ioctl将失败,并将errno设置为ENOTTY(字符串值:“设备不适当ioctl”)。正如ysth所说,在$中看到意想不到的价值的最常见的原因!正在检查它,当它是无效的 – 也就是说,除了紧接在系统调用失败之后的任何地方,因此测试操作的结果代码是至关重要的。

如果open实际上返回false为你,你发现ENOTTY在$!那么我会认为这是一个小bug(给出一个无用的价值$!),但我也很好奇它是如何发生的。代码和/或桁架输出将是漂亮的。

原文链接:https://www.f2er.com/Perl/173439.html

猜你在找的Perl相关文章