函数原型
包含在头文件 “stdlib.h” 中
int system(const char * command)
函数功能
执行 dos(windows系统) 或 shell(Linux/Unix系统) 命令,参数字符串command为命令名。另,在windows系统下参数字符串不区分大小写。
说明:在windows系统中,system函数直接在控制台调用一个command命令。
在Linux/Unix系统中,system函数会调用fork函数产生子进程,由子进程来执行command命令,命令执行完后随即返回原调用的进程。
函数返回值
命令执行成功返回0,执行失败返回-1。
举个栗子
实现关机小程序
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
char input[100];
system("shutdown -s -t 60");
//这是Windows系统下的一个关机命令
flag:
printf("你的电脑将在一分钟后关机,如果输入“我是猪”,就会取消关机!\n请输入: ");
scanf("%s",input);
if(0==strcmp(input,"我是猪"))
{
system("shutdown -a");//取消关机命令
}
else
{
goto flag;
}
return 0;
}
附录
一些system()函数的参数及实现的功能
表格里的内容可以通过 system(“HELP”);语句获取。
参数 | 功能 | 说明 |
ASSOC | 显示或修改文件扩展名关联 | |
ATTRIB | 显示或更改文件属性 | |
BREAK | 设置或清除扩展式 CTRL+C 检查 | |
BCDEDIT | 设置启动数据库中的属性以控制启动加载 | |
CACLS | 显示或修改文件的访问控制列表(ACL) | |
CALL | 从另一个批处理程序调用这一个 | |
CD | 显示当前目录的名称或将其更改 | |
CHCP | 显示或设置活动代码页数 | |
CHDIR | 显示当前目录的名称或将其更改 | |
CHKDSK | 检查磁盘并显示状态报告 | |
CHKNTFS | 显示或修改启动时间磁盘检查 | |
CLS | 清除屏幕 | * |
CMD | 打开另一个 Windows 命令解释程序窗口 | * |
COLOR | 设置默认控制台前景和背景颜色 | * |
COMP | 比较两个或两套文件的内容 | |
COMPACT | 显示或更改 NTFS 分区上文件的压缩 | |
CONVERT | 将 FAT 卷转换成 NTFS 你不能转换当前驱动器 | |
COPY | 将至少一个文件复制到另一个位置 | |
DATE | 显示或设置日期 | 后面加 /t 表示显示日期 |
DEL | 删除至少一个文件 | |
DIR | 显示一个目录中的文件和子目录 | |
DISKPART | 显示或配置磁盘分区属性 | |
DOSKEY | 编辑命令行、撤回 Windows 命令并创建宏 | |
DRIVERQUERY | 显示当前设备驱动程序状态和属性 | |
ECHO | 显示消息,或将命令回显打开或关闭 | |
ENDLOCAL | 结束批文件中环境更改的本地化 | |
ERASE | 删除一个或多个文件 | * |
EXIT | 退出 CMD.EXE 程序(命令解释程序) | * |
FC | 比较两个文件或两个文件集并显示它们之间的不同 | * |
FIND | 在一个或多个文件中搜索一个文本字符串 | * |
FINDSTR | 在多个文件中搜索字符串 | * |
FOR | 为一组文件中的每个文件运行一个指定的命令 | |
FORMAT | 格式化磁盘,以便用于 Windows | |
FSUTIL | 显示或配置文件系统属性 | |
FTYPE | 显示或修改在文件扩展名关联中使用的文件类型 | |
GOTO | 将 Windows 命令解释程序定向到批处理程序中某个带标签的行 | |
GPRESULT | 显示计算机或用户的组策略信息 | |
GRAFTABL | 使 Windows 在图形模式下显示扩展字符集 | * |
HELP | 提供 Windows 命令的帮助信息 | |
ICACLS | 显示、修改、备份或还原文件和目录的 ACL | |
IF | 在批处理程序中执行有条件的处理操作 | |
LABEL | 创建、更改或删除磁盘的卷标 | |
MD | 创建一个目录 | |
MKDIR | 创建一个目录 | |
MKLINK | 创建符号链接和硬链接 | |
MODE | 配置系统设备 | |
MORE | 逐屏显示输出 | * |
MOVE | 将一个或多个文件从一个目录移动到另一个目录 | |
OPENFILES | 显示远程用户为了文件共享而打开的文件 | |
PATH为 | 可执行文件显示或设置搜索路径 | |
PAUSE | 暂停批处理文件的处理并显示消息 | |
POPD | 还原通过 PUSHD 保存的当前目录的上一个值 | |
PRINT | 打印一个文本文件 | |
PROMPT | 更改 Windows 命令提示 | |
PUSHD | 保存当前目录,然后对其进行更改 | |
RD | 删除目录 | |
RECOVER | 从损坏的或有缺陷的磁盘中恢复可读信息 | * |
REM | 记录批处理文件或 CONFIG.SYS 中的注释(批注) | |
REN | 重命名文件 | |
RENAME | 重命名文件 | |
REPLACE | 替换文件 | * |
RMDIR | 删除目录 | |
ROBOCOPY | 复制文件和目录树的高级实用工具 | |
SET | 显示、设置或删除 Windows 环境变量 | |
SETLOCAL | 开始本地化批处理文件中的环境更改 | |
SC | 显示或配置服务(后台进程) | |
SCHTASKS | 安排在一台计算机上运行命令和程序 | |
SHIFT | 调整批处理文件中可替换参数的位置 | |
SHUTDOWN | 允许通过本地或远程方式正确关闭计算机 | |
SORT | 对输入排序 | |
START | 启动单独的窗口以运行指定的程序或命令 | |
SUBST | 将路径与驱动器号关联 | |
SYSTEMINFO | 显示计算机的特定属性和配置 | |
TASKLIST | 显示包括服务在内的所有当前运行的任务 | |
TASKKILL | 中止或停止正在运行的进程或应用程序 | |
TIME | 显示或设置系统时间 | 后面加 /t 表示显示时间 |
TITLE | 设置 CMD.EXE 会话的窗口标题 | “TITLE 你想改成啥” |
TREE | 以图形方式显示驱动程序或路径的目录结构 | “TREE D:” |
TYPE | 显示文本文件的内容 | “TYPE D:\\文本.txt” |
VER | 显示 Windows 的版本 | |
VERIFY | 告诉 Windows 是否进行验证,以确保文件正确写入磁盘 | |
VOL | 显示磁盘卷标和序列号 | |
XCOPY | 复制文件和目录树 | |
WMIC | 在交互式命令 shell 中显示 WMI 信息 |