转自
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)
函数功能强大,很多人用却对它的原理知之甚少先看linux版system函数的源码: 代码如下:#include <sys>#include <sys>#include <errno>#include int system(const char * cmdstring){ pid_t pid; int ...
这里有关于C语言system函数的参考颜色表,可以直观地显示出system函数中的color命令里的0~F分别对应出什么颜色,适用于在color命令中,不知道怎么设置控制台的背景色和前景色的人,无论什么时候,你只要想用system...
C语言中的system函数详解[归类].pdf
### C语言中的system命令 在C语言编程中,`system`命令是一个十分强大的工具,它允许程序员通过C语言编写的程序来执行操作系统级别的命令。这对于需要与操作系统进行交互的应用程序来说是非常有用的。本文将详细...
### C语言中的时间函数 在C语言中,处理时间数据是一项常见的需求,特别是在涉及日期、时间戳、定时器等应用场景时。本文将详细介绍C语言中用于处理时间的主要函数及其用法,帮助读者更好地理解和掌握这些重要的...
3. **处理鼠标事件**:在钩子函数中处理鼠标点击事件,如记录鼠标点击位置。 4. **释放钩子**:在程序退出前,通过`UnhookWindowsHookEx()`释放钩子。 #### 五、示例代码片段 下面是一个简单的示例,展示了如何...
在C语言中,可以使用系统调用来实现这些功能,例如使用`system("cls")`(在Windows中)或`system("clear")`(在Unix/Linux中)清屏。至于光标定位,ncurses库提供了`move(y, x)`函数,可以将光标移动到指定的行y和列...
3. **C语言中system函数**: `.doc`文件讨论了C语言中的`system`函数,这是一个用于执行操作系统命令的函数。了解如何安全有效地使用`system`函数可以扩展C程序的功能,比如执行shell命令、创建或删除文件等。 4. ...
`system()`函数允许你在C程序中执行操作系统命令。它接收一个字符串参数,该字符串是你要执行的命令。这个函数非常强大,但也需要注意安全问题,因为它可能会被执行恶意代码。 C语言的基础知识包括以下几个方面: ...
**C语言进阶system函数详解** 在C语言编程中,`system()`函数是一个非常实用的工具,它允许我们在程序中直接执行操作系统级别的命令。这个函数在Windows操作系统下尤其常见,其功能是向DOS(Disk Operating System...
S函数(System Functions)是Simulink中的一个特殊功能,它允许用户用C语言或其他编程语言实现自定义的动态系统行为。 S函数可以分为几个主要部分,首先是函数的初始化,这一部分通过函数mdlInitializeSizes()实现...
system("echo 欢迎使用C语言进阶system函数!"); ``` 2. 启动记事本程序并打开一个文件: ```c char fileName[] = "example.txt"; system(("notepad " + fileName).c_str()); ``` 3. 运行命令行命令,如`dir`...
附带超时功能的system函数,windows版本。 DWORD system_timeout(char* cmd, int timeout)
在C语言编程中,system函数是一个十分实用的工具,它允许程序员在程序中直接执行DOS命令,极大地扩展了C程序的功能。system函数是C标准库中的一个函数,包含在`stdlib.h`头文件中。本文将深入探讨system函数的使用...
在C语言中,`system()`函数是一个非常有用的工具,它允许程序员执行操作系统级别的命令,比如在DOS环境下执行各种操作。这个函数定义在`stdlib.h`头文件中,其基本语法是`int system(const char *command);`。返回值...
本文将深入探讨如何在Java中通过JNI调用C语言函数,为初学者提供一个详尽的实例教程。 1. **Java Native Interface (JNI)** JNI是Java平台标准的一部分,它为Java程序员提供了一个接口,可以编写本地方法(即C或...
C语言是一种广泛使用的计算机编程语言,其标准库中提供了丰富的函数,以支持各种编程需求。本文档详细列出了这些函数,并采用了中文语法着色的格式,使得在查阅时更加方便和直观。以下是一些重要的C语言函数知识点,...
在VB中,我们可以通过`System.Drawing`命名空间下的类和方法来绘制图形。例如: 1. `Graphics`类:这是VB中用于绘图的核心对象,可以从控件或窗体获取实例。使用`DrawLine`、`DrawRectangle`等方法绘制线条和矩形。...