我有一个可执行文件 (fossil scm),我的程序通过::CreateProcess 窗口调用从外部调用它。然后捕获 stdout 和 stderr。由于 fossil 的源代码可用,我更愿意从中创建一个静态库并直接发出调用。目前,与 fossil 的通信是通过命令行参数完成的,而返回的通信是通过进程返回码、stdout 和 stderr。 Fossil 通过 printf 和 fprintf 调用写入 stdout/err。
以最少的化石来源改变来解决这个问题的最佳方法是什么?是否有一种可靠的跨平台方式来拦截 stdout/err 并将其发送到内存缓冲区?
最佳答案
你说你想
intercept stdout/err and send it into a memory buffer
这表明您不想为 SCM 程序引入 API,而是希望在不更改现有代码的情况下继续解析文本输出。如果是这样,那么我认为改变您当前的方法毫无意义。在当前方法上使用内存缓冲区和静态链接到底能获得什么?
关于c++ - 如何集成开源 C 程序而不是通过系统调用调用其可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4531196/