在Linux下,connect()建立连接,-1为失败,但是-1不一定就是完全失败!
-1的情况下,有的是因为非阻塞造成的,就是在error中设置了对应的出错情况,例如EINPROGRESS,EAGAIN等可以认为是“非致命错误”,认为是可以接受的,这种只是导致暂时阻塞等情况。
所以可以如下使用
int ret = connect(...);
if(!ret || noFatalError())
{
//认为是成功的
}
bool nonFa[......]
Category Archives: Linux
CentOS很快的一个源
转载自:http://www.diybl.com/course/6_system/linux/Linuxjs/20081213/153625.html
CentOS USTC mirror
http://centos.ustc.edu.cn/centos/
安装后请按照以下步骤修改CenOS-Base.repo,以后就可以方便的用yum安装软件了.
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.r[......]
64位系统下无法连接libmysqlclient.so
64位Linux系统下,源码编译时,有时会无法链接libmysqlclient库:
/usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.so when searching for -lmysqlclient
/usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.a when searching for -lmysqlclient[......]
Linux设置socket客户端的连接超时
非常感谢原作者:http://hi.baidu.com/ganss/blog/item/1c69d3139036a8836538dba0.html
原来我们实现connect()超时基本上都使用unix网络编程一书的非阻塞方式(connect_nonb),今天在网上看到一篇文章,觉得很有意思,转载如下:
读Linux内核源码的时候偶然发现其connect的超时参数竟然和用SO_SNDTIMO操作的参数一致:
File: net/ipv4/af_inet.c
[cpp]
t[......]
Java中调用gcc编译c/c++文件(Linux)
准备把Exceed OJ用Java 重新开发,第一个棘手的问题就是:如何调用gcc编译文件。
google了5分钟发现资料不多。
调用外部程序是这个样子的。
Runtime.getRuntime().exec();
返回一个Process 类型变量,例如p[......]