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. 【bzoj2844】albus就是要第一个出场

    Time Limit: 6 Sec  Memory Limit: 128 MBSubmit: 2254  Solved: 934[Submit][Status][Discuss] Descriptio ...

  2. 【CodeChef】Chef and Graph Queries

    Portal --> CC Chef and Graph Queries Solution 快乐数据结构题(然而好像有十分优秀的莫队+可撤销并查集搞法qwq) 首先考虑一种方式来方便一点地..计 ...

  3. 【bzoj4869】相逢是问候

    Portal-->bzoj4869 Solution 这道题的话..长得就是线段树的样子qwq 如果做过的话..可能会联想到bzoj3211(没写博qwq晚点再说吧哈哈..) 首先大胆猜一波结论 ...

  4. UESTC--1730

    原题链接:http://acm.uestc.edu.cn/problem.php?pid=1730 分析:线段树单点更新,区间求和. #include<iostream> #include ...

  5. tp查询中2个表格中字段,比较大小

    $where['_string'] = '`has_number` < `number`';//~~~注意:这里`不能丢了: $coupon_flag = $coupon->where($ ...

  6. -webkit-line-clamp 多行文字溢出...

    一.应用 CSS代码: .box { width: 100px; display: -webkit-box; -webkit-line-clamp:; -webkit-box-orient: vert ...

  7. No qualifying bean of type [java.lang.String] found for dependency: expected

    出现这个问题的原因是因为多写了一个注解但是没有实体类.如: 或者其他注解下没有内容.

  8. 如何在WIndows电脑上安装 SVN Server 实现代码版本控制

    One 下载-安装 SVN SVNServer  先去官网下载服务器版本的svn server,下载地址 :https://www.visualsvn.com/server/download/   选 ...

  9. 比较时间的大小("HH:MM")格式

    function compareStrTime( timeStart , timeEnd ) { var dateA = new Date("2018/10/11 " + time ...

  10. Image Scaling using Deep Convolutional Neural Networks

    Image Scaling using Deep Convolutional Neural Networks This past summer I interned at Flipboard in P ...