首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遇到APR故障

遇到APR故障
EN

Stack Overflow用户
提问于 2012-12-21 00:42:01
回答 1查看 102关注 0票数 0

我正在使用libapr,但它们的一些基本原语似乎不能很好地工作,呈现出一种非常奇怪的行为。下面是我正在编写的代码:

代码语言:javascript
复制
    pr_pool_t *mp=NULL;
    apr_file_t *fp = NULL;
    apr_pollset_t *pollset=NULL;
    apr_pollfd_t file_fd;

    /*apr initialization*/
    CuAssertIntEquals(ct,0,apr_initialize());
    CuAssertIntEquals(ct,0,apr_pool_create(&mp,NULL));

    /*opens file to test poll*/
    CuAssertIntEquals(ct,0,apr_file_open(&fp, FILENAME,
            APR_FOPEN_WRITE | APR_FOPEN_CREATE | APR_FOPEN_READ,
            APR_FPROT_UREAD|APR_FPROT_UWRITE|APR_FPROT_UEXECUTE , mp));

    /*creates pollset*/
    CuAssertIntEquals(ct,0,apr_pollset_create(&pollset, 10,mp,0));

    /*prepares poll fd...*/
    file_fd.desc_type = APR_POLL_FILE;
    file_fd.reqevents = APR_POLLIN|APR_POLLOUT;
    file_fd.desc.f = fp;
    file_fd.client_data = fp;

    /*adds pollfd to pollset*/
    CuAssertIntEquals(ct,0,apr_pollset_add(pollset, &file_fd));

一切都运行得很好,直到我转到apr_pollset_add(pollset,&file_fd),在那里它失败并返回值1。

如果你分析这个函数的源代码,你会发现它永远不会返回1。实际上,1是作为系统错误返回的,使用libapr例程apr_sterror将其转换为:“不允许操作”。

为了解决这个问题,我几乎睡不着觉,吃不下饭,但没有成功。我真的需要使用这个库。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2012-12-21 11:58:31

我找到问题了。

我在轮询一个普通的文件。一个常规的文件is always ready be read or written

1对应于调用poll_ctl时设置的不允许操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13976696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档