linux C socke编程 创建的socket默认是阻塞的还是非阻塞的?

HULIHONG 2011-05-09 05:14:11
如题,谢谢
...全文
819 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sun_Phoenix 2011-05-09
  • 打赏
  • 举报
回复
STDIN_FILENO在程序启动时已经被自动打开了,而我们需要在调用open时指定O_NONBLOCK标志。这里介绍另外一种办法,可以用fcntl函数改变一个已打开的文件的属性,可以重新设置读、写、追加、非阻塞等标志(这些标志称为File Status Flag),而不必重新open文件。

#include <unistd.h>
#include <fcntl.h>

int fcntl(int fd, int cmd);
int fcntl(int fd, int cmd, long arg);
int fcntl(int fd, int cmd, struct flock *lock);这个函数和open一样,也是用可变参数实现的,可变参数的类型和个数取决于前面的cmd参数。下面的例子使用F_GETFL和F_SETFL这两种fcntl命令改变STDIN_FILENO的属性,加上O_NONBLOCK选项,实现和例 28.3 “非阻塞读终端”同样的功能。

Sun_Phoenix 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 nostopstep 的回复:]
引用 1 楼 justkk 的回复:

默认是阻塞的

正解,因此如果需要设置为非阻塞的,则需要使用其他控制函数了.
[/Quote]
en
谭海燕 2011-05-09
  • 打赏
  • 举报
回复
阻塞 +1
nostopstep 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 justkk 的回复:]

默认是阻塞的
[/Quote]
正解,因此如果需要设置为非阻塞的,则需要使用其他控制函数了.
justkk 2011-05-09
  • 打赏
  • 举报
回复
默认是阻塞的

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧