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.com 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=亮白色

 

  (注意:Microsoft Visual C++ 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:\123.txt

 

  用system()函数执行windows命令。

 

  #include <stdlib.h>

 

  #include <stdio.h>

 

  int main(void)

 

  {

 

  system("del d:\123.txt");

 

  return 0;

 

  }

 

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()会继承环境变量,通过环境变量可能会造成系统安全的问题。

范例

  #i nclude<stdlib.h>

 

  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的返回值影响了原进程

system()函数的更多相关文章

  1. 关于linux下system()函数的总结

    导读 曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入.这里必须要搞懂system()函数,因为有时你不得不面对它. 先来看一下system()函数的简单 ...

  2. C语言中的system函数参数及其作用

    函数名: system 功   能: 发出一个DOS命令  用   法: int system(char *command);  system函数已经被收录在标准c库中,可以直接调用 system() ...

  3. linux下使用fork,exec,waitpid模拟system函数

    代码如下: #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include &l ...

  4. Linux system函数详解

    system 功能:system()函数调用"/bin/sh -c command"执行特定的命令,阻塞当前进程直到command命令执行完毕 原型 int system(cons ...

  5. Linux system 函数的一些注意事项

    在日常的代码编程中 , 我们可以利用system  函数去调用一些我们自己想调用的命令 , 并获取他的返回值. 函数的原型如下: int system(const char *command); 上一 ...

  6. 关于system函数的安全性漏洞

    当以一个普通用户去执行  设置-用户ID 为root的程序时,如果再次用了system函数时,被system函数所执行的那个程序具有 有效-用户ID 为root的风险(虽然真实用户还是普通用户),这也 ...

  7. C语言中system()函数的用法总结(转)

    system()函数功能强大,很多人用却对它的原理知之甚少先看linux版system函数的源码: #include <sys/types.h> #include <sys/wait ...

  8. system 函数

    相关函数:fork, execve, waitpid, popen 头文件:#include <stdlib.h> 定义函数:int system(const char * string) ...

  9. system函数

    system两层含义: 1.正确退出后.还需要再判断,操作成功或者操作失败. 2.错误退出. #include <stdio.h> #include <stdlib.h> #i ...

  10. SUID或SGID程序中能不能用system函数

    system()函数的声明和说明如下: 注意它的描述那里,system()执行一个由command参数定义的命令,通过调用/bin/sh -c命令来实现这个功能.也就是说它的逻辑是这样的! 进程调用s ...

随机推荐

  1. windows2016上如何通过攻击ETERNALBLUE获得meterpreter反弹

    windows2016上如何通过攻击ETERNALBLUE获得meterpreter反弹 译:by  backlion 0x00前言 当微软发布MS17-010漏洞的补丁时,该漏洞影响的范围是从Win ...

  2. Centos 7.3 下 的QT 输入中文

    我的QT 目录在 /opt/Qt/Tools/QtCreator,进入到 /bin 目录,然后运行 ./qtcreator.sh  就可以运行 在qtcreator.sh 中加入 export QT_ ...

  3. Linux遇到的两个问题

    编译C++的和编译C语言的命令不同. 编译C++,应当先安装g++. 然后可以用#g++ filename.cpp -o filename 进行编译 编译C语言是用#gcc filename.c -o ...

  4. C#中调用Dll动态链接库

    C#中调用Dll动态链接库 起始 受限于语言的不同,我们有的时候可能会用别人提供的函数及方法 或者其他的什么原因.反正就是要调!!! 恰巧别人所使用的的语言跟自己又不是一样的 这个时候想要调用别人的函 ...

  5. Uniform Distribution均匀分布

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&am ...

  6. URL参数带加号“+”AJAX传值失败的解决方法

    URL中参数的值有加号,虽然请求的URL中含有加号,但是GET的时候却得不到加号! 解决办法,用JavaScript的encodeURIComponent函数对加号进行编码. 如str="a ...

  7. 给上传文件的input控件“美容”

    在工作中经常会遇到form表单这种东西.然而表单的其他input控件样式还是很好改变的.但是,唯独input类型是file的文件上传控件可能就没那么好打扮的漂亮. demo: html代码 <b ...

  8. NDK编译时两 .so之间调用问题

    Android C++(NDK)项目需要调用别人的代码,因此将其编译成了.so库,而自己的代码也编成了一个.so库. 结果编译成功,但是在运行时自己的.so调用别人的.so会失败,提示说没有正确传入参 ...

  9. 用js实现千位分隔符

    function mm(num) { return num && num .toString() .replace(/(\d)(?=(\d{3})+\.)/g, function($0 ...

  10. Node + vue 实现移动官网

    简介 使用 Node + vue 对公司的官网进行了一个简单的移动端的实现. 源码 https://github.com/wx1993/node-vue-fabaocn 效果 组件 轮播图(使用 vu ...