【问题标题】:C cross platform capture pipes subprocessC跨平台捕获管道子进程
【发布时间】:2015-12-31 15:34:19
【问题描述】:

我想创建一个跨平台(windows、mac、linux)C 应用程序,它能够生成子进程并同时捕获标准输入、标准输出和标准错误。

我知道在 unix 中使用 popen StackOverflow 可以做这样的事情

在带有 WinAPI 的 Windows 中,MSDN

我也知道可以将输出重定向到文件并从那里读取,但是重定向标准管道似乎是一个非常基本的标准库功能。

我是否遗漏了一个基本功能和/或是否有任何轻量级的跨平台库可以用来实现这一目标而不会产生很大的复杂性?

【问题讨论】:

  • 如果你想使用 all 标准流(输入、输出和错误),那么popen 是不可能的(它也存在于 Windows 中)。 Windows 和 POSIX(Linux 和 OSX)平台之间也没有通用功能,因此您必须使用预处理器进行条件编译。最后,我们不会帮助您找到图书馆,因为这与 SO 无关(但如果您找到图书馆并遇到麻烦,我们很乐意为您提供帮助)。
  • 对不起execl,我确实喜欢答案之一的代码示例。 (供将来参考Github)可以使用预处理器与 msdn 答案合并。不过,Glib 非常适合这项工作

标签: c pipe cross-platform


【解决方案1】:

glib 库提供您想要的。以下是其流程 API 的文档:https://developer.gnome.org/glib/stable/glib-Spawning-Processes.html

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2018-05-21
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 2016-09-08
    相关资源
    最近更新 更多