【问题标题】:is it possible to store output of system call in windows?是否可以在 Windows 中存储系统调用的输出?
【发布时间】:2009-07-30 07:30:31
【问题描述】:

例如:我想存储system("dir");的输出

【问题讨论】:

  • 另一方面,如果“dir”不只是一个示例,请使用 FindFirstFile/FindNextFile...

标签: c++ c windows


【解决方案1】:

是的,看看从 CreateProcess 捕获标准输出:

请注意,dir 是 DOS 下的内置命令。因此,您必须执行以下系统命令:

  • cmd.exe /c dir c:\path\to\directory

而不仅仅是打电话给dir。键入 cmd /? 以获取有关 /c 参数的更多信息。

【讨论】:

    【解决方案2】:

    您可以使用重定向到文件(系统(“dir > file”)),读取该文件并将其删除,或者像在 Unix 中那样采用未命名管道方式 - 调用 CreatePipe() 来创建管道并将其附加为PROCESS_INFORMATION 结构中的输入/输出流,并将该结构传递给 CreateProcess()。

    【讨论】:

    • 是的,我可以试试这个简单的东西,重定向到一个文件。
    【解决方案3】:

    POSIX 有一个 popen() 函数,我认为 Windows 有类似的东西叫做 _popen()。

    【讨论】:

    • 这不适用于 Windows GUI 应用程序,只能用于控制台。
    猜你喜欢
    • 1970-01-01
    • 2013-02-11
    • 2011-02-15
    • 2015-01-01
    • 2012-03-19
    • 1970-01-01
    • 2010-10-02
    • 2018-05-21
    • 2018-07-15
    相关资源
    最近更新 更多