2

PHP 中有一个方便的函数叫做proc_open. 它可以用来调用一个可执行文件,打开它的stdin,stdoutstderr管道。

C++ 中是否有该函数的良好跨平台版本?唯一可以用谷歌搜索的是这个Windows 教程(尽管它的代码只是挂起)。

4

2 回答 2

3

你可能会得到“某处”

于 2013-09-11T19:33:35.253 回答
1

编辑:

正如我所看到的,Boost.Process 不再处于积极开发中,并且示例没有使用当前(1.54)编译并且不是那么最新(1.4x - 我在升级 boost 之前忘记写下确切的版本)版本的提升,所以我需要撤回我的建议。

原帖

您可以使用Boost.Process库。你可以在这里找到很好的例子。另外,请从此处查看本章以及

// 
// Boost.Process 
// ~~~~~~~~~~~~~ 
// 
// Copyright (c) 2006, 2007 Julio M. Merino Vidal 
// Copyright (c) 2008 Boris Schaeling 
// 
// Distributed under the Boost Software License, Version 1.0. (See accompanying 
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 
// 

#include <boost/process.hpp> 
#include <string> 
#include <vector> 
#include <iostream> 

namespace bp = ::boost::process; 

bp::child start_child() 
{ 
    std::string exec = "bjam"; 

    std::vector<std::string> args; 
    args.push_back("--version"); 

    bp::context ctx; 
    ctx.stdout_behavior = bp::capture_stream(); 

    return bp::launch(exec, args, ctx); 
} 

int main() 
{ 
    bp::child c = start_child(); 

    bp::pistream &is = c.get_stdout(); 
    std::string line; 
    while (std::getline(is, line)) 
        std::cout << line << std::endl; 
} 
于 2013-09-11T19:34:35.890 回答