我在哪里可以学习如何使C ++程序与操作系统(Linux)交互

我是一个C ++初学者。

我想创build与操作系统交互的小程序(使用Kubuntu Linux)。 到目前为止,我还找不到任何教程或手册来获取C ++与操作系统的接口。

在PHP中,我可以使用命令exec()或反引号操作符来启动通常在控制台中执行的命令。 我如何在C ++中做类似的事情? 我如何让我的C ++程序执行任何其他命令? 我怎样才能得到这样的命令的输出?

谢谢。

您可以使用stdlibsystem()命令来执行系统命令:

 #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()扫描目录中的文本文件并打印文件的内容。