易截截图软件、单文件、免安装、纯绿色、仅160KB

linux system函数使用详解 (zz from nodeadbird520)


相关函数
fork,execve,waitpid,popen
表头文件
#i nclude<stdlib.h>
定义函数
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<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源码
#include
#include
#include
#include
int system(const char * cmdstring)
{
    pid_t pid;
    int status;
    if(cmdstring == NULL){
         
         return (1);
    }
    if((pid = fork())<0){
            status = -1;
    }
    else if(pid == 0){
        execl("/bin/sh", "sh", "-c", cmdstring, (char *)0);
        -exit(127); //子进程正常执行则不会执行此语句
        }
    else{
            while(waitpid(pid, &sta


相关文档:

linux启动配置

启动配置:
/etc/init.d/rcS
 
# mkfs.jffs2 -r yyfs/ -o yy.jffs2 -p -l -n -e 0x8000 -m size 
内核启动显示:
unable to open an initial console.
 
解决:
创建rootfs过程中,在/dev目录下手动创建如下节点:
mknod -m 660 null c 1 3
mknod -m 660 console c 5 1
Taking the GNU/Linux hos ......

谷歌Android被Linux内核除名

      2  月 3  日, Linux  内核开发者 Greg Kroah-Hartman  将 Android  的驱动程序从 Linux 内核“状态树”(“ staging tree”  )上除去,从此, Android  与 Linux  开发主流将 ......

Linux 汇编器:对比 GAS 和 NASM

本文解释两种最流行的 Linux® 汇编器 —— GNU Assembler(GAS)和 Netwide
Assembler(NASM) ——
之间一些比较重要的语法差异和语义差异,包括基本语法、变量和内存访问、宏处理、函数和外部例程、堆栈处理以及重复执行代码块的技术方面的差异。
与其他语言不同,汇编语言
要求开发人员了 ......

[转]Linux下创建桌面快捷方式

gnome: 点右键---new Launcher,输入快捷方式的名称,并选择执行的程序即可。
kde: 右键单击桌面的空白处,在弹出的对话框中选“新建-应用程序链接”。再在弹出的窗口中点“执行”,在命令栏中点后面的浏览键,找到相应的程序。再点“常规”,进行取名、更改图标等操作,最后点确定,这样 ......

(转)Linux下的FTP服务器配置

转自:http://www.linuxdiyf.com/bbs/viewthread.php?tid=106169
Linux下建议使用vsftp,安全简单实用
vsftp即Very Security FTP,顾名思义,非常安全的FTP服务器。
目录  
1 vsFTP服务器的安装
1.1 匿名服务器的连接(独立的服务器)
1.2 开启匿名FTP服务器上传权限
1.3 开启匿名服务器下传的权限
1.4 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号