|
apue第二版14章关于流式设备的问题,请高手解惑!
1 程序14-7代码如下:
#include <stropts.h>
#include <unistd.h>
int isastream(int fd)
{
return(ioctl(fd, I_CANPUT, 0) != -1);
}
然后14-8调用了这个程序:
#include <apue.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
int i, fd;
for (i = 1; i < argc; i++) {
if ((fd = open(argv, O_RDONLY)) < 0) {
err_ret("%s: can't open", argv);
continue;
}
if (isastream(fd) == 0)
err_ret("%s: not a stream", argv);
else
err_msg("%s: streams device", argv);
}
exit(0);
}
但是在我电脑上的输出结果却不对。测试如下:
#./a.out /dev/tty /dev/null(必须使用root权限才能打开设备文件)
输出结果如下:
/dev/tty: not a stream: Invalid argument
/dev/null: not a stream: Inappropriate ioctl for device
而书中tty是一个streams device
貌似对所有的文件都是这两种结果,要么Invalid argument,要么Inappropriate ioctl for device。为什么和书上不一样呢?
2 程序14-9中的sys/conf.h头文件不存在。
3 程序14-10中的getmsg和getpmsg貌似都不存在。
请大家解惑,顺便请介绍一些关于linux下流式文件的一些资料,apue看样子偏向unix多些。 |
|