📅  最后修改于: 2023-12-03 15:29:41.611000             🧑  作者: Mango
system()是C/C++中用于执行命令的一个函数。在程序运行时,可以使用system()函数来启动一个新的进程,并在该进程中运行特定的系统命令。在大多数操作系统中,可以使用以下Linux/Unix命令语法来启动一个新的进程:
system("command");
其中,command是要在新的进程中执行的命令。当该命令完成后,system()函数将返回该命令的退出状态。如果返回0,则表示命令成功执行。
#include <iostream>
using namespace std;
int main()
{
int result;
result = system("ipconfig");
cout << "The command returned " << result << endl;
return 0;
}
输出:
Windows IP Configuration
Ethernet adapter Ethernet:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter VirtualBox Host-Only Network:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::adb8:9aff:fef7:ef09%14
IPv4 Address. . . . . . . . . . . : 192.168.56.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter VirtualBox Host-Only Network #2:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::59f8:608:2a7d:2870%19
IPv4 Address. . . . . . . . . . . : 192.168.100.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter VirtualBox Host-Only Network #3:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::68da:2bf0:30af:6b2a%25
IPv4 Address. . . . . . . . . . . : 192.168.99.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
The command returned 0
#include <iostream>
using namespace std;
int main()
{
int result;
result = system("ls -al");
cout << "The command returned " << result << endl;
return 0;
}
输出:
total 28
drwxr-xr-x 1 root root 4096 Oct 28 16:20 .
drwxr-xr-x 1 root root 4096 Oct 8 20:22 ..
-rwxr-xr-x 1 root root 8864 Oct 28 16:20 hello
-rw-r--r-- 1 root root 478 Oct 28 16:19 hello.c
drwx------ 2 root root 4096 Oct 28 2019 .ssh
由于system()函数的缺陷,因此在使用它时,必须采取一些措施来防止系统命令注入攻击。以下是一些防范措施: