当前位置: 技术问答>linux和unix
UNIX 环境高级编程 17章进程高级通信中的open服务器2 ioctl函数返回错误!!
来源: 互联网 发布时间:2016-08-29
本文导语: 我正在看《unix环境高级编程》,我把书上17章进程高级通信中的open服务器2时输入并且编译运行,发现在serv_listen函数中的ioctl(fd[1],I_PUSH,"connld")执行时,总是返回小于0的值,因此服务器端根本建不起来。 我用perror打印...
我正在看《unix环境高级编程》,我把书上17章进程高级通信中的open服务器2时输入并且编译运行,发现在serv_listen函数中的ioctl(fd[1],I_PUSH,"connld")执行时,总是返回小于0的值,因此服务器端根本建不起来。
我用perror打印出错信息,显示“Invalid argument”。
可是我看不出这个函数到底哪个参数错了,还请达人多多指教!!
我用perror打印出错信息,显示“Invalid argument”。
可是我看不出这个函数到底哪个参数错了,还请达人多多指教!!
|
ioctl(fd[1],I_PUSH,"connld")
fd[1]这个是什么,应该是你open的返回值,“connld”这个参数不应该是字符串.
fd[1]这个是什么,应该是你open的返回值,“connld”这个参数不应该是字符串.
|
貌似应该是书上例子的参数跟现在的linux有一些区别,移植时需要注意...
|
作者实在2.4内核下测试的,我觉得也可能有错!
|
man ioctl
int ioctl(int d, int request, ...);
int ioctl(int d, int request, ...);
|
linux和bsd不支持流(stream),改用其他的unix,如solaris,或者在linux和bsd下用unix domain socket代替,不过就不如stream简洁了。