CC++中system()函数详解
windows下system () 函数详解
windows操作系统下system () 函数详解(主要是在C语⾔中的应⽤)
函数名: system
功 能: 发出⼀个DOS命令
⽤ 法: int system(char *command);
system函数已经被收录在标准c库中,可以直接调⽤
程序例:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
printf("About to spawn command and run a DOS command\n");
system("dir");
return 0;
}
⼜如:system("pause")可以实现冻结屏幕,便于观察程序的执⾏结果;system("CLS")可以实现清屏操作。⽽调⽤color函数可以改变控制台的前景⾊和背景,具体参数在下⾯说明。
例如,⽤ system("color 0A"); 其中color后⾯的0是背景⾊代号,A是前景⾊代号。各颜⾊代码如下:
0=⿊⾊ 1=蓝⾊ 2=绿⾊ 3=湖蓝⾊ 4=红⾊ 5=紫⾊ 6=黄⾊ 7=⽩⾊ 8=灰⾊ 9=淡蓝⾊ A=淡绿⾊ B=淡浅绿⾊ C=淡红⾊ D=淡紫⾊ E=淡黄⾊ F=亮⽩⾊
system("mkdir F:\hello\world") 可以在F:盘下建⽴⼀个⽂件夹hello,在hello下⾯建⽴⼀个⽂件夹world。
(注意: 6.0 ⽀持system)举例
看了下⾯实例,相信你会对学到更多system在C程序设计中的应⽤。
例⼀: C语⾔调⽤DOS命令实现定时关机:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int print()
{
printf(" ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪╪╪╪\n");
printf("╔═══╧╧ C语⾔关机程序╧╧═══╗\n");
printf("║※1.实现10分钟内的定时关闭计算机║\n");
printf("║※2.⽴即关闭计算机║\n");
printf("║※3.注销计算机║\n");
printf("║※0.退出系统║\n");
printf("╚═══════════════════╝\n");
return 0;
}
void main()
{
system("title C语⾔关机程序");//设置cmd窗⼝标题
system("mode con cols=48 lines=25");//窗⼝宽度⾼度
system("color 0B");
system("date /T");
system("TIME /T");
char cmd[20]="shutdown -s -t ";
char t[5]="0";
print();
int c;
scanf("%d",&c);
getchar();
switch(c)
{
case 1:printf("您想在多少秒后⾃动关闭计算机?(0~600)\n");scanf("%s",t);system(strcat(cmd,t));break;
case 2:system("shutdown -p");break;
case 3:system("shutdown -l");break;
case 0:break;
default:printf("Error!\n");
}
system("pause");
exit(0);
}
例⼆:
⽤C语⾔删除⽂件,例如⽂件的位置是d:\
⽤system()函数执⾏windows命令。
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
system("del d:\");
return 0;
}
system函数 是可以调⽤⼀些DOS命令,⽐如
system("cls");//清屏,等于在DOS上使⽤cls命令
下⾯列出常⽤的DOS命令,都可以⽤system函数调⽤:
ASSOC 显⽰或修改⽂件扩展名关联。
AT 计划在计算机上运⾏的命令和程序。
ATTRIB 显⽰或更改⽂件属性。
BREAK 设置或清除扩展式 CTRL+C 检查。
CACLS 显⽰或修改⽂件的访问控制列表(ACLs)。
CALL 从另⼀个批处理程序调⽤这⼀个。
CD 显⽰当前⽬录的名称或将其更改。
CHCP 显⽰或设置活动代码页数。
CHDIR 显⽰当前⽬录的名称或将其更改。
CHKDSK 检查磁盘并显⽰状态报告。
CHKNTFS 显⽰或修改启动时间磁盘检查。
CLS 清除屏幕。
CMD 打开另⼀个 Windows 命令解释程序窗⼝。
COLOR 设置默认控制台前景和背景颜⾊。
COMP ⽐较两个或两套⽂件的内容。
COMPACT 显⽰或更改 NTFS 分区上⽂件的压缩。
CONVERT 将 FAT 卷转换成 NTFS。您不能转换当前驱动器。
COPY 将⾄少⼀个⽂件复制到另⼀个位置。
DATE 显⽰或设置⽇期。
DEL 删除⾄少⼀个⽂件。
DIR 显⽰⼀个⽬录中的⽂件和⼦⽬录。
DISKCOMP ⽐较两个软盘的内容。
DISKCOPY 将⼀个软盘的内容复制到另⼀个软盘。
DOSKEY 编辑命令⾏、调⽤ Windows 命令并创建宏。
ECHO 显⽰消息,或将命令回显打开或关上。
ENDLOCAL 结束批⽂件中环境更改的本地化。
ERASE 删除⾄少⼀个⽂件。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
FC ⽐较两个或两套⽂件,并显⽰不同处。
FIND 在⽂件中搜索⽂字字符串。
FINDSTR 在⽂件中搜索字符串。
FOR 为⼀套⽂件中的每个⽂件运⾏⼀个指定的命令
FORMAT 格式化磁盘,以便跟 Windows 使⽤。
FTYPE 显⽰或修改⽤于⽂件扩展名关联的⽂件类型。
GOTO 将 Windows 命令解释程序指向批处理程序中某个标明的⾏。GRAFTABL 启⽤ Windows 来以图像模式显⽰扩展字符集。
HELP 提供 Windows 命令的帮助信息。
IF 执⾏批处理程序中的条件性处理。
LABEL 创建、更改或删除磁盘的卷标。
MD 创建⽬录。
MKDIR 创建⽬录。
MODE 配置系统设备。
MORE ⼀次显⽰⼀个结果屏幕。
MOVE 将⽂件从⼀个⽬录移到另⼀个⽬录。
PATH 显⽰或设置可执⾏⽂件的搜索路径。
PAUSE 暂停批⽂件的处理并显⽰消息。
POPD 还原 PUSHD 保存的当前⽬录的上⼀个值。
PRINT 打印⽂本⽂件。
PROMPT 更改 Windows 命令提⽰符。
PUSHD 保存当前⽬录,然后对其进⾏更改。
RD 删除⽬录。
RECOVER 从有问题的磁盘恢复可读信息。
REM 记录批⽂件或 CONFIG.SYS 中的注释。
REN 重命名⽂件。
RENAME 重命名⽂件。
REPLACE 替换⽂件。
RMDIR 删除⽬录。
SET 显⽰、设置或删除 Windows 环境变量。
SETLOCAL 开始批⽂件中环境更改的本地化。
SHIFT 更换批⽂件中可替换参数的位置。
SORT 对输⼊进⾏分类。
START 启动另⼀个窗⼝来运⾏指定的程序或命令。
SUBST 将路径跟⼀个驱动器号关联。
TIME 显⽰或设置系统时间。
TITLE 设置 CMD.EXE 会话的窗⼝标题。c++string类型
TREE 以图形模式显⽰驱动器或路径的⽬录结构。
TYPE 显⽰⽂本⽂件的内容。
VER 显⽰ Windows 版本。
VERIFY 告诉 Windows 是否验证⽂件是否已正确写⼊磁盘。
VOL 显⽰磁盘卷标和序列号。
XCOPY 复制⽂件和⽬录树。
命令⼤⼩写均可。
Linux下system () 函数详解简介
(执⾏shell 命令)
相关函数
fork,execve,waitpid,popen
表头⽂件
#include<stdlib.h>
定义函数
int system(const char * string);
函数说明
system()会调⽤fork()产⽣⼦进程,由⼦进程来调⽤/bin/sh-c string来执⾏参数string字符串所代表的命令,此命令执⾏完后随即返回原调⽤的进程。在调⽤system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。
返回值
如果fork()失败 返回-1:出现错误
如果exec()失败,表⽰不能执⾏Shell,返回值相当于Shell执⾏了exit(127)
如果执⾏成功则返回⼦Shell的终⽌状态
如果system()在调⽤/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(NULL),则返回⾮零值>。如果system()调⽤成功则最后会返回执⾏shell命令后的返回值,但是此返回值也有可能为 system()调⽤/bin/sh失败所返回的127,因此最好能再检查errno 来确认执⾏成功。
加说明
在编写具有SUID/SGID权限的程序时请勿使⽤system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题。范例
#include<stdlib.h>
void main()
{
system(“ls -al /etc/passwd /etc/shadow”);
}
执⾏结果:
-rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd
-r--------- 1 root root 572 Sep 2 15 :34 /etc/shado
例2:
char tmp[];
sprintf(tmp,"/bin/mount -t vfat %s /mnt/usb",dev);
system(tmp);
其中dev是/dev/sda1.System与exec的区别
1、system()和exec()都可以执⾏进程外的命令,system是在原进程上开辟了⼀个新的进程,但是exec是⽤新进程(命令)覆盖了原有的进程
2、system()和exec()都有能产⽣返回值,system的返回值并不影响原有进程,但是exec的返回值影响了原进程
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论