作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 C 代码,用于设置 select() 以监听 TCP 套接字和消息队列上的传入数据:
fd_set readSet;
u32 maxFD = 0;
mqd_t parentQueue;
int serverSocket;
/* not shown: parentQueue and serverSocket were successfully opened */
FD_ZERO(&readSet);
FD_SET(serverSocket,&readSet);
FD_SET(parentQueue,&readSet);
/* next, not shown: block with select() and I/O processing */
我的问题是当我添加消息队列时代码崩溃(带有核心转储)使用FD_SET()、FD_SET(parentQueue,&readSet)来读取Set。
手册页指出,在 Linux 上,mqd_t 可以与 select() 一起使用。而parentQueue对应于一个有效的mqd_t,通过mq_open()获得。那么为什么 FD_SET() 会崩溃呢?是因为在 Cygwin 上,消息队列不是文件吗?但我可以在/dev/mqueue 中看到队列。
最佳答案
经过一番挖掘,我发现了问题所在。在cygwin上,队列文件描述符(mqd_t)是64位长(我使用的是64位系统),并且由于队列文件描述符超出了select FD_SETSIZE的范围,导致FD_SET崩溃
关于cygwin 上使用 FD_SET() 和消息队列进行核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26138453/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!