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. 【SPOJ】QTREE6(Link-Cut-Tree)

    [SPOJ]QTREE6(Link-Cut-Tree) 题面 Vjudge 题解 很神奇的一道题目 我们发现点有黑白两种,又是动态加边/删边 不难想到\(LCT\) 最爆力的做法,显然是每次修改单点颜 ...

  2. 音视频处理之FFmpeg程序的介绍与使用20180302

    一.FFMPEG程序介绍与使用 主要介绍一下ffmpeg工程包含的三个exe的使用方法. 1. FFMPEG程序介绍 1.1.下载 ffmpeg的官方网站是:http://ffmpeg.org/ 下载 ...

  3. BMP格式图像读取与存储

    全局变量: 1 #include "stdafx.h" #include <windows.h> /*BMP位图数据是4字节对齐*/ #define WIDTHBYTE ...

  4. 03-树2. List Leaves (25) 二叉树的层序遍历

    03-树2. List Leaves (25) 题目来源:http://www.patest.cn/contests/mooc-ds/03-%E6%A0%912 Given a tree, you a ...

  5. Vue.js基础 笔记

    Vue.js的声明: < script src = “https://unpkg.com/vue” ></ script > el:值可以是CSS选择符.HTML元素.或者是返 ...

  6. Jenkins使用教程之创建job

    第一部分:常规设置(general) 1.点击新建,进入新建项目页面 2.输入项目名称,选择构建一个自由风格的软件项目(里面可以自己自由进行配置,使用更加灵活),点击ok 3.项目名称与描述 4.gi ...

  7. vim如何粘贴

    刚开始vim的学习之旅,在进行粘贴操作时遇到了麻烦. 教程上粘贴的命令是p,但我发现该命令只适用于从vim到vim的复制(p未必就仅仅局限于此,但我目前所了解到的情况如此),当我从网上复制了一段代码想 ...

  8. JAVA多线程提高五:原子性操作类的应用

    当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2.因为A和B线程在更新变量i ...

  9. form表单设置input文本属性只读,不可更改

    记住一条好用的,设置readonly属性为true <input     readonly=''true"> 更多方法,转载: http://www.jb51.net/web/6 ...

  10. AngularJs几种服务区别

    下面说说这几种函数之间的区别: 函数 定义 适合场景 provider(name, Object OR constructor() ) 一个可配置的.有复杂逻辑的服务.如果你传递了一个对象,那么它应该 ...