xenix system v难题
因在xenix system V下有个串口通信的项目要做,不能更新cc编译器,因为此xenix system V系统与一个测试软件集成在一起,更新cc编译器,有可能使测试软件不能使用,危险系数很大,测试软件代码内部有许多cc编译命令,所以必须在原有的环境下编写串口通信程序,系统是很老的unix系统,对系统头文件进行搜索,发现系统中不存在stdlib.h头文件和termios.h,但是这两个文件是编写串口通信程序必须的,所以现在感觉要实现有点难度,后来在/usr/include/sys找到一个termio.h文件,与termios.h进行比较,主要在于一个结构不同
termio.h中的结构
struct termio {
unsigned short c_iflag; /* input modes */
unsigned short c_oflag; /* output modes */
unsigned short c_cflag; /* control modes */
unsigned short c_lflag; /* line discipline modes */
char c_line; /* line discipline */
unsigned char _cc[NCC]; /* control chars */
};
termios.h中的结构
struct termios{
tcflag_t c_iflag; /*input flags*/
tcflag_t c_oflag; /*output flags*/
tcflag_t c_cflag; /*control flags*/
tcflag_t c_lflag; /*local flags*/
cc_t c_cc[NCCS]; /*control characters*/
};
char c_line; /* line discipline */
line discipline 是什么意思?
至于stdlib.h头文件,也不知道怎么弄了,拷了一个vc6.0中的stdlib.h文件进去,编译串行通信程序,系统提示如下错误:
/usr/include/stdlib.h:fatal error21:bad preprocessor command 'error '
看来只有更新cc编译器,还是有另外好的方法,第一次做unix下项目,请高手指点
------解决方案--------------------实在要用,就用sco unix吧,从xenix移植到sco应该不难。
------解决方案--------------------要拷也要从UNIX或者Linux里面拷啊,怎么从VC6拷呢:-)
不过即使是从Linux拷也肯定不行,因为差别还是太大了。
一个解决方法是自己写一个stdlib.h,先为空,编译的时候却什么定义就从别的系统拷过来,一次拷缺少的那几行,只到没有错误为止。
至于termio,你可以在系统中找一下有没有文档,比如man termio,或者查看termio.h,看看有那些函数,man一下看看。