我是一个C ++初学者。
我想创build与操作系统交互的小程序(使用Kubuntu Linux)。 到目前为止,我还找不到任何教程或手册来获取C ++与操作系统的接口。
在PHP中,我可以使用命令exec()或反引号操作符来启动通常在控制台中执行的命令。 我如何在C ++中做类似的事情? 我如何让我的C ++程序执行任何其他命令? 我怎样才能得到这样的命令的输出?
谢谢。
您可以使用stdlib
的system()
命令来执行系统命令:
#include <stdlib.h> int main() { system("ls -l"); }
system()
返回一个int
作为它的返回值,但是int的值是依赖于系统的。 如果你尝试使用一个不存在的命令,你会得到标准的“no such command”输出,通常是一个非零的返回值。 (例如,运行system("ls -l");
在我的Windows XP机器上,返回值为1。
你可以使用system()
来执行任意命令,但是如果你想用程序轻松控制输入和输出,你应该看看popen()
。
为了更多的控制,你可以考虑做一个shell可能做什么,创建一些额外的文件描述符,分叉开始另一个进程,设置文件描述符0,1和2(输入,输出和错误)在该过程中连接他们到你原来的进程文件描述符,然后执行你想要控制的程序。 这不是为了隐隐的心脏:-)
您可以按照前面的说明使用system()
,也可以使用提供对标准POSIX API的访问的库。 unistd.h和GNU C库包含许多用于操作系统交互的功能。 这些库的可能性是无止境的,因为你可以自己实现这些功能。 一个简单的例子:使用scandir()
扫描目录中的文本文件并打印文件的内容。