我有一个古老的调制解调器接口库,最初是为Solaris和Linux制作的,我试图看看它是否适用于Linux。
在Linux上编译时,我看到了:
#if ! defined(WIN32)
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <termios.h>
#include <sys/termiox.h>
似乎无法找到termiox.h的位置,当我谷歌搜索它时,它只显示termios.h的结果
我不能简单地删除引用,因为有很多调用它。
有人会碰巧知道在Linux下定义termiox调用的位置吗?
操作系统版本为RHEL 5.5
引用termiox库的代码只是说它忽略了termiox选项:
/home/local/NT/jayanthv/8.7/CallBur/lib/unix.c(556): error: struct "<unnamed>" has no field "termiox"
if( modem_opt_ignore_termiox == No && ioctl( modem_handle, TCSETX, &mattr_current.termiox ) < 0 )
我应该继续在代码周围添加#if!defined()吗?
答案 0 :(得分:0)
不要开玩笑。在man page linked by rodion的底部,它说:
提供termiox(7I)系统调用以兼容 以前的版本及其使用是不鼓励的。相反,termio(7I) 建议使用系统调用。
该手册页的日期是1990年。从那时起,termio has also become obsolete:
termio.h
此头文件已过时,已被termios.h
取代,termios.h
是POSIX标准的一部分。这两个头文件非常相似。但是,termio.h
不包含与termios.h
相同的头文件。因此,您应该确保直接查看{{1}}标题,以确保它包含您的应用程序所需的所有内容。
因此,termiox被termio取代,后者被termios取代。