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. Qt实现截屏并保存(转载)

    原博地址:http://blog.csdn.net/qinchunwuhui/article/details/52869451?_t_t_t=0.28889142944202306 目前对应用实现截屏 ...

  2. hihoCoder #1582 : Territorial Dispute 凸包

    #1582 : Territorial Dispute 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 In 2333, the C++ Empire and the Ja ...

  3. 2017 国庆湖南 Day4

    期望得分:20+40+100=160 实际得分:20+20+100=140 破题关键: f(i)=i 证明:设[1,i]中与i互质的数分别为a1,a2……aφ(i) 那么 i-a1,i-a2,…… i ...

  4. linux系统df和du命令的区别

    发现一台用户的电脑,df检查出来的/磁盘空间占用了16G,比用du查看得到的磁盘空间大的多,du查看/下所有程序目录加起来还不到5G.这是什么原因呢? 即便是有隐藏文件,查了也很小啊.   因为df和 ...

  5. Spring REST 异常处理

    在上一篇中写到了Spring MVC的异常处理,SpringMVC捕获到异常之后会转到相应的错误页面,但是我们REST API ,一般只返回结果和状态码,比如发生异常,只向客户端返回一个500的状态码 ...

  6. .Net公用代码

    创建txt文本文件 #region 创建txt文本文件 /// <summary> /// 创建txt文本文件 /// </summary> /// <param nam ...

  7. 线程池-Threadlocal

    ThreadLoclc初衷是线程并发时,解决变量共享问题,但是由于过度设计,比如弱引用的和哈希碰撞,导致理解难度大.使用成本高,反而成为故障高发点,容易出现内存泄露,脏数据.贡献对象更新等问题.单从T ...

  8. json格式的一些常用操作方法

    package com.liveyc.restfull.until; import java.util.HashMap; import java.util.Iterator; import java. ...

  9. MQTT协议及推送服务(二)

    MQTT简介 MQTT全称叫做Message Queuing Telemetry Transport,意为消息队列遥测传输,是IBM开发的一个即时通讯协议.由于其维护一个长连接以轻量级低消耗著称,所以 ...

  10. 39、请用代码简答实现stack

    栈和队列是两种基本的数据结构,同为容器类型.两者根本的区别在于: stack:后进先出 queue:先进先出 PS:stack和queue是不能通过查询具体某一个位置的元素而进行操作的.但是他们的排列 ...