Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redirect 重定向printf?_Redirect - Fatal编程技术网

Redirect 重定向printf?

Redirect 重定向printf?,redirect,Redirect,例如,如何将printf的输出重定向到流或其他对象?我有一个与控制台库链接的gui应用程序。库重复调用printf。我需要一种方法来截取这些数据,并让函数对其进行处理。此外,创建控制台不是一个选项。顺便说一句,我正在使用Windows 编辑-我也不希望重定向到文件。freopen(文件名、模式、标准输出) 如果要避免使用文件,可以使用命名管道,将stdout重定向到该管道,并在不同的线程或进程中从中读取 某些省略了错误检查的伪代码: HANDLE hPipe = CreateNamedPipe(

例如,如何将printf的输出重定向到流或其他对象?我有一个与控制台库链接的gui应用程序。库重复调用printf。我需要一种方法来截取这些数据,并让函数对其进行处理。此外,创建控制台不是一个选项。顺便说一句,我正在使用Windows


编辑-我也不希望重定向到文件。

freopen(文件名、模式、标准输出)

如果要避免使用文件,可以使用命名管道,将stdout重定向到该管道,并在不同的线程或进程中从中读取

某些省略了错误检查的伪代码:

HANDLE hPipe = CreateNamedPipe("\\.\pipe\SomePipeName", ...);
int pipeFileDescriptor = _open_osfhandle(hPipe, someFlags);
_dup2(pipeFileDescriptor, _fileno(stdout));
现在
printf
写入
stdout
的内容应该进入管道

在另一个线程或进程中,可以将管道中的数据读入缓冲区:

HANDLE hPipeClient = CreateFile("\\.\pipe\SomePipeName", ...);
ReadFile(hPipeClient, ...);
我认为它会工作,但我还没有测试它