易截截图软件、单文件、免安装、纯绿色、仅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的触摸屏之五:帧缓冲设备上较准界面的配置

(1)帧缓冲设备跟TTY的关系。需要关注tty跟帧缓冲设备的关系,一般情况下帧缓冲设备是可以独立操作的,但是如果为了保证单独占用不被抢占,似乎还要关联一个tty终端。这里用的是虚终端VT。
      虚终端,也叫虚屏,它的英文名字为virtual terminal,缩写为VT或vt。在Unix系统用户中,虚终端有着 ......

Linux下的定时器:alarm()与 setitimer()

Linux下的定时器有两种,以下分别介绍:
 
1、alarm
 
如果不要求很精确的话,用alarm()和signal()就够了
 
unsigned int alarm(unsigned int seconds)
 
函数说明:
alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取 ......

linux include 路径


linux搜索路径:   如果用的shell是bash,则环境变量加载 
  1./etc/profile 
  2.用户home目录下面的.bash_profile 
  3.用户home目录下面的.bash_login  
gcc   -I<include目录> 
  POSIX系统也可以建立环境变量 
  ......

我的Linux之路① RHEL安装

       今天很果断的把一直在虚拟机上安装的Linux卸载了,感觉试了一小段时间在VMware上面安装的Linux,使不出感觉来。更为重要的是据说(我也只能道听途说了)java程序开发很多是在Linux环境下开发的(难道是因为在Linux下运行?)。为了更加的接近生产,我决定安装双系统。
 &n ......

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

gnome: 点右键---new Launcher,输入快捷方式的名称,并选择执行的程序即可。
kde: 右键单击桌面的空白处,在弹出的对话框中选“新建-应用程序链接”。再在弹出的窗口中点“执行”,在命令栏中点后面的浏览键,找到相应的程序。再点“常规”,进行取名、更改图标等操作,最后点确定,这样 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号