gpt4 book ai didi

c - 经历 APR 失败

转载 作者:行者123 更新时间:2023-11-30 15:52:58 27 4
gpt4 key购买 nike

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

    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将其翻译为:“不允许操作”。

我几乎没睡没吃试图解决这个问题,但没有成功。我真的需要使用这个库。

如有任何帮助,我们将不胜感激。

最佳答案

我发现了问题。

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

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

关于c - 经历 APR 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13976696/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com