请帮忙解释以下代码。(100分)

  • 主题发起人 主题发起人 DiamondKing
  • 开始时间 开始时间
D

DiamondKing

Unregistered / Unconfirmed
GUEST, unregistred user!
void Set_Nonblock(int fd)
{
int flags;
if((flags=fcntl(fd,F_GETFL,0))<0)
{
printf("/nF_GETTFL error!/n");
exit(1);
}
flags|=O_NONBLOCK;
if(fcntl(fd,F_SETFL,flags)<0)
{
printf("/nF_SETFL error!/n");
exit(1);
}
}
------------------------
当函数被调用时,fd 为一个监听套节描述字(服务端).
上面函数是否设置以异步方式通讯?
 
学习学习
 
fcntl?
好象是调用Select类的函数
 
我查了帮助,fcntl 是用来控制打开文件的描述字。以下是查到的帮助(不过依然不知道
它能起什么作用):
The fcntl() function performs controlling operations on the open file
specified by the filedes parameter.
b] [red]When the fcntl(), dup() and dup2() functions need to block, only the cal-
ling thread is suspended rather than all threads in the calling process[/red].[/b][/b][/b]
The following are values for the request parameter:
---------------
程序是跑在unix下。
 
调用select 之前好像只需
/*A*/
FD_ZERO,
FD_SET就好了
但它在A处先调用了 Set_Nonblock
 
UNIX下我就不太熟了
 
从字面上看,好象是设置“非阻塞”通讯。
出错就退出。
 
搞定了。UNIX下面套节字可以当作一个文件操作。
 

Similar threads

I
回复
0
查看
669
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
850
import
I
I
回复
0
查看
558
import
I
后退
顶部