转自
http://blog.sina.com.cn/s/blog_60cbc1700100qlpi.html
文章摘自百度百科
简介
(执行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的返回值影响了原进程
分享到:
相关推荐
C语言附带超时功能的system函数,liuux版本 接口:int system_timeout(const char *cmdstring, int timeout)
C语言中的system函数详解[归类].pdf
C语言进阶system函数.docx
C语言进阶system函数.rar
system()函数功能强大。以下小编就为大家介绍一下在C语言中system()函数的用法。需要的朋友可以过来参考下,希望对大家有所帮助
附带超时功能的system函数,windows版本。 DWORD system_timeout(char* cmd, int timeout)
主要介绍了简述C语言中system()函数与vfork()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下
函数原型: int system(char *command)...注意如果路径中有空格,需要对整个路径添加双引号 2.关闭程序 system("TASKKILL /F /IM iexplore.exe"); 3.查看帮助 >HELP >TASKKILL /?
linux C程序中获取shell脚本输出(如获取system命令输出)
主要介绍了C语言system 自动关机函数代码,需要的朋友可以参考下
C语言程序设计(第2版)-2期 拓展知识5-4 system函数.pdf 学习资料 复习资料 教学资源
几个小函数,新手可以留下来保存一下可以学习学习,system的函数。。
//函数功能: 从终端读入字符集大小n , 以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中 //函数参数: //向量HT的前n个分量表示叶子结点,最后一个分量表示根结点,各字符的编码长度不等,所以按实际...
C语言中生成的EXE文件执行后窗口消失方法 1.包含头文件时: #include <stdlib.h>/*header file,因为在stdlib.h头文件中定义了system()函数*/ 2.在最后一句加上:system("PAUSE");//system函数,Pause属于DOS命令 ...
turboc2.zip: 较早的C语言编译器。DOS环境下运行。不能产生32位的程序。 安装:直接解包到c:\下,在DOS窗口中运行c:\turboc2下的tc.exe即可 ...可以在大型项目的源程序中迅速找到变量、函数等的定义及调用关系等
2 C语言中的数据类型 19 2.1 常量 19 2.1.1 #define 19 2.1.2 const 19 2.2 字符串常量 20 2.3 二进制数、位、字节与字 20 2.4 八进制 20 2.5 十六进制 20 2.6 原码 21 2.7 反码 21 2.8 补码 21 2.9 SIZEOF关键字 22...
在C语言中提供了多种文件读写的函数: ?字符读写函数 :fgetc和fputc ?字符串读写函数:fgets和fputs ?数据块读写函数:freed和fwrite ?格式化读写函数:fscanf和fprinf 下面分别予以介绍。使用以上函数都要求...