linux system函数深入理解 【百科全说】-凯发k8官方旗舰厅

腾讯视频/爱奇艺/优酷/外卖 充值4折起

system(执行shell 命令)
相关函数
fork,execve,waitpid,popen
表头文件
#i nclude
定义函数
int system(const char * string);
函数说明
system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命>令执行完后随即返回原调用的进程。在调用system()期间sigchld 信号会被暂时搁置,sigint和sigquit 信号则会被忽略。
返回值
=-1:出现错误
=0:调用成功但是没有出现子进程
>0:成功退出的子进程的id
如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(null),则返回非零值>。
如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为 system()调用/bin/sh失败所返回的127,因此最好能再检查errno 来确认执行成功。
附加说明
在编写具有suid/sgid权限的程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题。
范例
#i nclude
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。

03/26 06:26
mkdir的函数原型(使用时需包含#include ): int mkdir(const char *path, mode_t mode); 参数: path——目录名,比如abc,/var/www/abc等 mode——目录权限 返回值: 返回0 表示成功, 返回 -1表示错误,并且会设置errno值。 关于mode定义,请参考:http://pubs.opengroup.org/onlinepubs/7908799/xsh/sysstat.h.html 当
03/02 17:43
一.进程的基本概念 程序是为了完成某种任务而设计的软件,比如vi是程序。什么是进程呢? 进程就是运行中的程序。一个运行着程序,可能有多个进程。比如web服务器是apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户同时请求httpd,apache服务器将会创建多个httpd进程来对其进行服务。 首先我们看看进程的定义。进程是一个具有独立功能的程序关于某个数据集合的一次可以并发执行的运行活动,是处于活动状态的计算机程序。进程作为构成系统的基本细胞,不仅是系统内部独立运行的实
09/15 09:10
文件系统的类型 linux有四种基本文件系统类型:普通文件、目录文件、连接文件和特殊文件,可用file命令来识别。 普通文件:如文本文件、c语言元代码、shell脚本、二进制的可执行文件等,可用cat、less、more、vi、emacs来察看内容,用mv来改名。 目录文件:包括文件名、子目录名及其指针。它是linux储存文件名的唯一地方,可用ls列出目录文件。 连接文件:是指向同一索引节点的那些目录条目。用ls来查看是,连接文件的标志用l开头,而文件面后以"->"指向所连接的文件。 特殊
04/14 15:51
在前面学习了 kobject和 kset之后,就迫不及待的想开始“研究”设备模型了。经过这几天的学习,感觉受益匪浅。所以就将自己的理解整理了下来 想要完成一个设备的驱动,就要涉及三部分: bus, device, driver。当然这些“新”节点都是最终继承于kobject。 一.bus 这里先整理一下bus,总线负责在设备与驱动间建立连接,包括 i2c, pci, 串口,platform等。其中platform是虚拟总线。 1.1 结构体 信息结构体是 bus_type. struct bus
04/04 17:31
fdisk是linux下的一个硬盘分区工具硬盘分区原理一样,但工具格式等等都不一样,一个是在装系统时的分区,一个是装好系统后的分区 装系统时的分区,装好系统后一般是没法修改也不好调整的,在装系统时未分区的硬盘空间,装好系统后是可以操作或分区加载的 这里主要是说这种情况,一个是对未分区的空闲硬盘的操作,又或是对新加的硬盘操作 这里就要用到fdisk了,不过这个只能在2t以内的硬盘操作,大于2t的,就没法用了,得用到另一个parted的工具 还有一点,linux对于硬盘的理解是以 /dev/hd|s
08/08 00:54
利用mysql root提权方法 mysql 5.x里面引入了一个system函数,这个函数可以执行系统命令,当mysql以root登陆的时候,就可以利用这个函数执行命令,当然是在权限许可的 范围内。 一般我们按照常规思路,搞到mysql的root密码之后,我们都会连接上去,创建一个表,然后outfile,搞到一个webshell ,然后提权如斯这般。今天我们换一种方式。 按照上面的方法,我们需要知道web的绝对路径,当然这个很不好找,有些有sqlinjection的,可能报错会显示出来,有的就
12/12 19:53
概述:用户使用shell跟内核交互,linux中有很多命令,不同的命令有不同的功能.多个命令合起来可以完成一个大的功能.命令很多我们不可能记得每条命令的用法. 所以,我们必须有一种方法来快速知道一个命令是如何使用的,有什么作用.所以,几乎所有的命令都提供了帮助手册,告诉命令的使用者如何使用命令.命令 的作用等等.帮助手册页很长,我们不可能为了使用一个命令,而从头到尾把帮助手册读完,这时候需要一种快速读懂(有目的的去读)命令的帮助手册的方法.是如何实现的呢?管理整个计算硬件的其实是核心(kerne
02/10 02:19
使用方法将其复制,保存为一个shell文件,比如security.sh.将其上传到linux服务器上,执行sh security.sh,就可以使用该脚本了! 复制代码 代码如下: #!/bin/sh # desc: setup linux system security # author:coralzd # powered by www.freebsdsystem.org # version 0.1.2 written by 2011.05.03 #account setup passwd -l
03/06 10:33
linux编译内核 - 准备工作 通常要运行的第一个命令是: #cd /usr/src/linux;make mrproper 该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖 配置 ??接下来的内核配置过程比较烦琐,但是配置的适当与否与日后linux的运行直接相关,有必要了解一下一些主要的且经常用到的选项的设置。 ??配置内核可以根据需要与爱好使用下面命令中的一个: #make config(基于文本的最为传统的配置界面,不推荐使用) #make menuconfig(基于文本选单
网站地图