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 将首先扫描传递的字符串