C/C++ 中的 system() 函数详解

system() 函数用于从 C/C++ 程序中调用操作系统的命令。例如,我们可以在 Windows 上调用 system("dir"),或在类 Unix 环境中调用 system("ls") 来列出目录的内容。

它是一个标准库函数,定义在 C 的 头文件和 C++ 的 中。

语法

system() 函数的语法如下:

int ****system****(const char ***command**);

参数

  • command:一个指向空终止字符串的指针,该字符串包含我们想要执行的命令。

返回值

  • 如果命令成功执行,它返回 0。
  • 如果命令执行未完成,它返回一个非零值。

示例:演示 system() 函数的程序

在这个程序中,我们将使用 echo 命令来打印 "Hello World" 字符串。为了了解其用法和最佳实践,<a href="https://www.geeksforgeeks.org/courses/cpp-programming-basic-to-advanced?utmcampaign=221systeminccpp&utmmedium=gfgcontenticp&utm_source=geeksforgeeks">C++ 课程 提供了详细的解释和实际示例。

C++


CODEBLOCK_b2dba8d2

C


CODEBLOCK_17245d71

Output

Hello, World!
Command executed successfully.

编写一个能编译并运行其他程序的 C/C++ 程序?

我们可以使用 system() 从我们的程序中调用 gcc。请参阅下面为 Linux 编写的代码。我们可以轻松更改代码以在 Windows 上运行。

C++


CODEBLOCK_725342f9

要将上述代码转换为 Windows 版本,我们需要进行一些更改。Windows 上的可执行文件扩展名是 .exe。因此,当我们运行编译好的程序时,我们使用 a.exe 而不是 ./a.out。

system() 函数 vs 使用库函数

system() 在 Windows 操作系统中的一些常见用途包括:

  • system("pause"):此命令用于执行暂停命令,使屏幕/终端等待按键。
  • system("cls"):此命令用于清除屏幕/终端。

然而,由于以下原因,应避免调用 system 命令:

  • 这是一个非常昂贵且消耗资源的函数调用。
  • 使用 system() 会使程序在某种程度上不可移植,这意味着这仅适用于系统级别有 pause 命令的系统,如 DOS 或 Windows。但不适用于 Linux、MAC OSX 和大多数其他系统。

让我们看一个简单的 C++ 代码,使用 system("pause") 输出 Hello World:

C++


CODEBLOCK_6e19835a

C


CODEBLOCK_94745775

上述程序在 Windows 操作系统中的输出:

Hello World!
Press any key to continue…

该程序依赖于操作系统,并执行以下繁重的步骤:

  • 它在屏幕上打印 "Hello World!"。
  • 它显示一条消息 "Press any key to continue…"。
  • system() 函数打开操作系统的 shell,该 shell 将首先扫描传递的字符串
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/29041.html
点赞
0.00 平均评分 (0% 分数) - 0