我有一个应用程序需要向cmd发送命令,然后返回输出(捕获输出)。如何在不使用任何MS Windows特定API的情况下使用C ++实现这一目标?有没有办法可以做到跨平台(例如对于linux终端)?顺便说一句,我在赢得XP SP3。
我实际上意味着重定向输入/输出。例如,在cmd上运行命令“make”,然后在错误捕获错误消息的情况下(重定向到我的应用程序)。
答案 0 :(得分:2)
如前所述:如果您可以避免在程序中启动子进程,而是适应更广泛的“工具箱隐喻”,那通常会更好......
http://en.wikipedia.org/wiki/Unix_philosophy
但如果这不适合您的项目,请查看Boost.Process。
另外:如果您使用Qt(在任何情况下都很好看),还有QProcess。
答案 1 :(得分:1)
难道你不能只使用C ++提供的常规cin和cout吗? (当然,如果你的程序是一个GUI程序,除非你调用Windows AllocConsole()命令,否则cin和cout将不会连接到任何有用的东西......但这只是Windows的工作方式。如果你想要编译的代码也是如此Linux等,你可以把#ifdef WIN32放在那个电话周围)
答案 2 :(得分:1)
作为C89和C99标准的一部分的system()函数可以在Linux和Windows上使用,并允许在C / C ++中执行命令。
答案 3 :(得分:0)
默认情况下,大多数系统从键盘获取标准输入,因此通常需要cin从用户那里获取信息,尽管在很多情况下可以将其重定向到其他来源。
您可以执行以下操作:
cout << "How old are you?" << endl;
int age;
cin >> age;