调用系统命令system()
头文件
stdlib.h
函数原型
int system(char *command)
Windows系统
int system(const char *string)
Linux系统
功能
简单的讲,system函数可以调用在程序中调用系统命令。
在Windows系统中调用的是cmd控制台命令
;在Linux系统中调用的是shell命令
。
参数
输入
函数的输入是一个字符串,可以是字符串常量,也可以是字符串数组。
字符串的内容即是需要执行的系统命令。
输出
函数输出为一个整数值,用于标志命令运行的结果。具体返回值的意义较为复杂,在这里暂不作深入研究。
分析
只要是在命令行或者shell中可以执行的命令,该函数都可以调用并执行,因此可以在程序中对系统进行各种操作。
在调用时,参数可以直接为字符串,也可以是字符串数组。例如,
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("dir");
return 0;
}
或者是
#include <stdio.h>
#include <stdlib.h>
int main()
{
char com[]="dir";
system(com);
return 0;
}
也可以利用字符串处理函数,对命令进行灵活的处理。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char com1[]="dir";
char com2[]=" /q";
system(strcat(com1,com2));
return 0;
}
实验
在学习中,我们可以利用system函数实现一些有趣的小功能。
实现程序暂停
在如VC6.0、VS2013、C-Free等开发环境下编译器会自动在程序的结尾添加暂停功能,从而方便查看程序运行的结果。但是在有的开发环境下,编译器并不会自动添加暂停功能,使得程序在运行时只能看到一个黑框一闪而过。为了能够看到程序运行的结果,我们需要手动在程序的结尾添加一个暂停语句,这里便要用到system函数来实现。
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello World!\n");
system("pause");
return 0;
}
实现系统关机功能
有了system函数对系统指令的调用,我们自然就可以实现在命令行更够实现的功能。例如自动关闭计算机。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char t[10], c[30] = "shutdown -s -t ";
printf("请输入多少秒后关闭计算机:");
gets(t);
system(strcat(c, t));
return 0;
}
控制台标题
程序运行时,通常在标题栏中显示的是程序的运行目录。我们可以使用系统命令,使标题栏显示我们需要的内容,如程序名,使得程序窗口显得更加合理。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char t[10], c[30] = "shutdown -s -t ";
system("title 关闭计算机");
printf("请输入多少秒后关闭计算机:");
gets(t);
system(strcat(c, t));
return 0;
}
system函数还可以实现很多强大的功能,来帮助我们利用程序来操作系统或者获得信息。巧妙的利用系统命令可以得到很多灵活而又方便的功能。