2011-10-31 71 views
1

我有一个应用程序需要发送命令到cmd,然后得到输出(捕获输出)。如何在不使用任何MS Windows特定API的情况下使用C++来实现?有没有一种方法可以做到跨平台(例如用于Linux终端)?顺便说一句,我在赢得XP SP3。如何使用C++与命令提示符(CMD)进行通信?

我其实是指重定向输入/输出。例如,在cmd上运行命令“make”,然后在错误捕获错误消息的情况下(重定向到我的应用程序)。

+0

问题很不清楚。你是否必须启动一个单独的进程并重定向其输入/输出?或者你只是问如何打印东西,并从控制台读取? –

回答

2

如前所述:如果你能避免在程序启动的子进程,而是融入更广泛的“工具箱的比喻,”经常可以更好...

http://en.wikipedia.org/wiki/Unix_philosophy

但是,如果这不是一个适合您的项目,请查看Boost.Process

另外:如果你使用的是Qt(这在任何情况下都很好看),也有QProcess

+0

谢谢,正是我想要的。 – Amani

0

默认情况下,大多数系统从键盘获得他们的标准输入,因此cin通常需要从用户那里获得信息,尽管在很多情况下这可以被重定向到其他来源。

你可以这样做:

cout << "How old are you?" << endl; 
int age; 
cin >> age; 
1

你就不能使用常规的CIN和cout是C++提供? (当然如果你的程序是一个GUI程序,cin和cout将不会连接到任何有用的东西,除非你调用Windows AllocConsole()命令......但这只是Windows的工作方式。如果你想要编译的代码Linux等等,你可以把#ifdef WIN32放在这个调用中)

1

那么,作为C89和C99标准一部分的system()函数可以在Linux和Windows上使用,并允许在C/C++中执行命令。

+0

但是用这个函数不能重定向输出。 – Amani

+0

您可以随时将其输出到一个temp result.txt文件,然后读取该文件。 – Carth

相关问题