繁体   English   中英

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

[英]Where can I learn how to make a C++ program interact with the Operating System (Linux)

我是C ++初学者。

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

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

谢谢。

您可以使用system()执行任意命令,但是,如果您想通过程序轻松控制输入和输出,则应该查看popen()

为了获得更多控制,您可以查看shell可能执行的操作,创建一些额外的文件描述符,分支启动另一个进程,在该进程中设置文件描述符0,1和2(输入,输出和错误)以进行连接将它们添加到原始进程文件描述符中,然后执行要控制的程序。 这不适合胆小的人:-)

您可以在stdlib使用system()命令来执行系统命令:

#include <stdlib.h>
int main() {
    system("ls -l");
}

system()返回一个int作为返回值,但int的值依赖于系统。 如果您尝试使用不存在的命令,您将获得标准的“无此命令”输出,并且通常是非零返回值。 (例如,运行system("ls -l");在我的Windows XP计算机上,此处返回值1。

您可以按照之前的说明使用system() ,也可以使用提供标准POSIX API访问权限的库。 unistd.hGNU C库包含许多用于OS交互的函数。 这些库的可能性是无穷无尽的,因为您可以自己实现这些功能。 一个简单的例子:使用scandir()扫描目录中的文本文件并打印文件的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM