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. 洛谷 P3723 [AH2017/HNOI2017]礼物 解题报告

    P3723 [AH2017/HNOI2017]礼物 题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手环,一个留给自己,一个送给她.每个手环上各有 \(n\) 个 ...

  2. 解决win7 64位操作系统下安装PL/SQL后连接报错问题: make sure you have the 32 bits oracle client installed

    1. 在Oracle官网(http://www.oracle.com/technetwork/topics/winsoft-085727.html)下载文件: instantclient-basic- ...

  3. 图像处理之均值滤波介绍及C算法实现

    1 均值滤波介绍 滤波是滤波是将信号中特定波段频率滤除的操作,是从含有干扰的接收信号中提取有用信号的一种技术. 均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临 ...

  4. 【计算机视觉】SIFT中LoG和DoG比较

    <SIFT原理与源码分析>系列文章索引:http://www.cnblogs.com/tianyalu/p/5467813.html 在实际计算时,三种方法计算的金字塔组数noctaves ...

  5. vue props验证

    <!DOCTYPE html> <html> <head> <title></title> <meta charset="u ...

  6. 基于javaWeb阶段下的Servlet总结

    1. Servlet概述   Servlet是用Java语言编写的服务端的程序,采用request--response模式提供Web服务,并且支持标准ServletAPI,Servlet就一个运行在w ...

  7. MySQL建表时列名同保留字重复问题解决办法

    建表时遇到遇到属性名同MySQL的保留字相同导致不能建表的问题,如下SQL语句: CREATE TABLE TBL_ACCOUNT_FROZEN_RECORD ( ID BIGINT NOT NULL ...

  8. springsecurity remember-me 功能

    本文基于spring-security-web-4.1.2.RELEASE. 要实现rememberMe,有两种方案. 1.基于简单加密token的方法 首先需要在配置文件中加入<remembe ...

  9. CCPC2018-A-Buy and Resell

    Problem Description The Power Cube is used as a stash of Exotic Power. There are n cities numbered 1 ...

  10. vijos 1288 箱子游戏 计算几何

    背景 hzy是箱子迷,他很喜欢摆放箱子,这次他邀请zdq,skoier一起来玩game... 描述 地板上有一个正方形的大箱子和许多三角型的小箱子.所有的小箱子都在大箱子里面,同时,一些三角形的小箱子 ...