跨平台(linux/Win32)的非C++IO在stdin/stdout/stderr
-
10-07-2019 - |
题
我试图找到最佳解决方案的非IO通过stdin/stdout有以下特点:
- 只要有足够的数据,在阅读 n-大小的块。
- 如果没有足够的数据,在部分区块。
- 如果没有可用的数据,方框直到有一些(即使它也可以比 n).
我们的目标是允许有效转让用于大数据集,同时处理'控制'码立即(而不是让他们萦绕在一些局部填充的缓冲区的地方).
我知道我可以实现这一点通过使用螺纹和istream::get()循环,或者通过编写了一堆的平台特定的代码(因为你不能选择()对文件处理在windows)...((还有istream::readsome()这看来很有希望,但是唯一的结果我可以找到在谷歌的人说这实际上并没有很好的工作。))
因为我没有做过太多的编码w/这些Api,也许有一个更好的办法。
解决方案
也许 提升::asio 可以使用你吗?
其他提示
我用螺纹和平特定的代码。看看 我的回答另一个问题.我能把操作系统特定的东西在inputAvailable()(Linux选择使用Windows只是返回true)。然后我可以使用WaitForSingleObject()超时在Windows尝试让在线完成,然后TerminateThread()以杀死它。很丑陋的,但小组没有想要使用此位的提升。
不隶属于 StackOverflow