当前位置:首页 » 操作系统 » linuxerrno

linuxerrno

发布时间: 2022-08-18 08:04:57

1. linux 非阻塞connect errno什么情况下不为einprogress

当connect在非阻塞模式下,会出现返回-1值,错误码是EINPROGRESS,但如何判断connect是联通的呢?stevens书中说明要在connect后,继续判断该socket是否可写?

若可写,则证明链接成功。如何判断可写,有2种方案,一种是select判断是否可写,二用poll模型。

select:
int CheckConnect(int iSocket)
{
fd_set rset;

FD_ZERO(&rset);
FD_SET(iSocket, &rset);

timeval tm;
tm. tv_sec = 0;
tm.tv_usec = 0;

if ( select(iSocket + 1, NULL, &rset, NULL, &tval) <= 0)
{
close(iSocket);
return -1;
}

if (FD_ISSET(iSocket, &rset))
{
int err = -1;
socklen_t len = sizeof(int);
if ( getsockopt(iSocket, SOL_SOCKET, SO_ERROR ,&err, &len) < 0 )
{
close(iSocket);
printf("errno:%d %s\n", errno, strerror(errno));
return -2;
}

if (err)
{
errno = err;
close(iSocket);

return -3;
}
}

return 0;
}

poll:

int CheckConnect(int iSocket) {
struct pollfd fd;
int ret = 0;
socklen_t len = 0;

fd.fd = iSocket;
fd.events = POLLOUT;

while ( poll (&fd, 1, -1) == -1 ) {
if( errno != EINTR ){
perror("poll");
return -1;
}
}

len = sizeof(ret);
if ( getsockopt (iSocket, SOL_SOCKET, SO_ERROR, &ret, &len) == -1 ) {
perror("getsockopt");
return -1;
}

if(ret != 0) {
fprintf (stderr, "socket %d connect failed: %s\n",
iSocket, strerror (ret));
return -1;
}

return 0;
}

2. linux如何直接取得当前的errno值

你都知道是空指针了,你还想看什么错误?你是想知道它什么时候变空了吗?可以打一些段点之类的。

3. linux是如何设置errno的

谁设置的errno 肯定不是open函数吧 你想错了,就是它设置的

在系统调用函数中,都会有这样的代码处理。这就是系统提供的函数的功能。

4. linux 取得socket 怎么取得errorno

#include <errno.h>

extern int errno;

然后出现错误后errno会被重置,你直接打印就可以看到了

5. linux 下 errno=110是什么意思

errno.110 is: Connection timed out

6. linux中编程中errno != EINTR

在linuxC的read函数中,errno = EINTR时表示因为中断而暂停。那么这个if的条件句意思是返回值为-1并且不是由于中断而停止调用的意思。

7. linux 程序能修改errno的值吗

默认情况下,只要返回值不是0,linux都会认为这次的结果是错误的
所以你可以定义你的error值为任何非0值

热点内容
魅族微信多开安卓怎么弄 发布:2025-01-18 10:04:33 浏览:448
网络设置里没有服务器是什么 发布:2025-01-18 09:52:19 浏览:343
阿里云esc服务器系统 发布:2025-01-18 09:49:16 浏览:790
你们家的无线网密码是多少 发布:2025-01-18 09:47:50 浏览:730
renderscriptandroid 发布:2025-01-18 09:32:18 浏览:993
安卓手机如何拍游戏素材 发布:2025-01-18 09:30:59 浏览:348
广州日立压缩机有限公司 发布:2025-01-18 09:15:08 浏览:624
服务器两条宽带如何叠加网速 发布:2025-01-18 08:52:17 浏览:731
oracle存储过程集合 发布:2025-01-18 08:42:39 浏览:885
洋葱数学缓存 发布:2025-01-18 08:38:36 浏览:919