相关疑难解决方法(0)

stdin/stdout/stderr上的跨平台(linux/Win32)非阻塞C++ IO

我试图通过stdin/stdout找到非阻塞IO的最佳解决方案,具有以下特征:

  • 只要有足够的数据,就可以读入n- size的块.
  • 如果没有足够的数据,请读取部分块.
  • 如果没有可用数据,则阻塞直到有一些数据(即使它可能小于n).

目标是允许有效传输大型数据集,同时立即处理"控制"代码(而不是让它们在某处部分填充的缓冲区中逗留).

我知道我可以通过使用线程和istream :: get()循环,或者通过编写一堆特定于平台的代码来实现这一点(因为你不能在windows中的文件句柄上选择())......((那里也是istream :: readsome()看起来很有希望,但我在谷歌上找到的唯一结果是人们说它实际上并不好用.))

由于我没有对这些API做过多编码,也许有更好的方法.

c++ stdin iostream pipe nonblocking

8
推荐指数
1
解决办法
8539
查看次数

在stdin中使用boost :: asio :: async_read?

简短的问题:我有一个实时模拟,它作为一个背景过程运行,并与管道连接到调用pogramm.我想使用stdin向该进程发送命令,以通过stdout从中获取某些信息.现在因为它是一个实时过程,它必须是一个非阻塞输入.boost :: asio :: async_read和iostream :: cin一起使用这个任务是个好主意吗?如果可行,我该如何使用该功能?还有什么建议吗?

c++ boost iostream asynchronous boost-asio

5
推荐指数
1
解决办法
5837
查看次数

标签 统计

c++ ×2

iostream ×2

asynchronous ×1

boost ×1

boost-asio ×1

nonblocking ×1

pipe ×1

stdin ×1