gpt4 book ai didi

c - 如何在 vxworks 或 linux 上取消阻塞的 read/recvfrom 系统调用

转载 作者:行者123 更新时间:2023-11-30 18:14:14 24 4
gpt4 key购买 nike

任务一中:

...

while (1)
{
if (running == false)
break;
ret = read(fd, buf, size); /* Or: ret = recvfrom(sock, buf, size, 0, NULL, NULL); */
...
}

任务二中:

...
running = true;
/* ioctl(fd, FIOCANCEL, 0); */
close(fd); /* Or: close(sock);*/

任务II中应该做什么来取消被阻止的任务I

vxworks中,有一个函数ioctl(fd, FIOCANCEL, 0)可以取消阻塞的读或写,但它不起作用。可能是因为驱动程序不支持“FIOCANCEL”

如何在vxworks和linux中编写任务二?或者还有其他方法来完成我的任务吗?

最佳答案

在 Linux 上取消 read/recvfrom 调用是不可能的。您无法使用相同的 API 编写这些任务。在 Linux 上,您可以使用 epoll 和 O_NONBLOCK 来创建取消读取/接收的语义。

在 Linux 和 vxworks 上使用相同的代码不可能做到这一点。

关于c - 如何在 vxworks 或 linux 上取消阻塞的 read/recvfrom 系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17781516/

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