- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想执行任意命令行应用程序并在生成时读取其标准输出。我用 CreateNamedPipe
创建一个管道,然后将另一端(打开使用 CreateFile
)供应到 CreateProcess
.如果目标进程没有明确地使用标准输出缓冲进行操作,是否有办法确保有问题的管道没有缓冲,或者至少系统最小值用作缓冲区大小?
最佳答案
您无法真正控制缓冲区大小。您可以将读取和写入缓冲区大小传递给 CreateNamedPipe
,但内核会自动增加这些缓冲区大小。基本上,缓冲区将始终至少与在任何给定时间准备读取的最大数据量一样大。换句话说,您对可用数据的响应速度越快,写入管道的数据块越小,保留的缓冲区就越小。
The input and output buffer sizes are advisory. The actual buffer size reserved for each end of the named pipe is either the system default, the system minimum or maximum, or the specified size rounded up to the next allocation boundary. ... Whenever a pipe write operation occurs, the system first tries to charge the memory against the pipe write quota. ... If the remaining pipe write quota is too small to fulfill the request, the system will try to expand the buffers to accommodate the data using nonpaged pool reserved for the process.
stdout
时,输出通常在写入管道之前由该应用程序缓冲。如果您想要无缓冲输出,则需要使用 stderr。
关于winapi - 无缓冲 CreateNamedPipe 用作 CreateProcess 的标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1569425/
程式码片段: void RunThread(void* unused_args) { PSECURITY_DESCRIPTOR sdsc; ULONG size; Conver
我需要为客户端和服务器(在同一主机)之间的通信创建命名管道,代码如下: WCHAR wszPipeName[MAX_FILE_LENGTH]; swprintf_s(wszPipeName, MAX_
我的场景如下:使用 CreateNamedPipe() 创建命名管道对象的过程具有管理员权限,但客户端进程“连接”到它 CreateFile()才不是。通过 NULL作为 CreateNamedPip
我正在尝试使用 Windows API CreateNamedPipe 创建一个双工命名管道,以用于我的 shell 扩展和我的主桌面应用程序之间的 IPC。 对于 Vista 及更高版本,您可以传递
我多久可以销毁传递给 CreateNamedPipe() 的 lpSecurityAttributes 指向的结构? 是否需要为每个管道实例单独设置一个? CreateNamedPipe() 的 MS
我想执行任意命令行应用程序并在生成时读取其标准输出。我用 CreateNamedPipe创建一个管道,然后将另一端(打开使用 CreateFile)供应到 CreateProcess .如果目标进程没
我是一名优秀的程序员,十分优秀!