• execl execv


    int execl(const char *path, const char *arg, ...);

    函数说明

    execl()其中后缀"l"代表list也就是参数列表的意思第一参数path字符指针所指向要执行的文件路径 接下来的参数代表执行该文件时传递的参数列表argv[0],argv[1]... 最后一个参数须用空指针NULL作结束

    2函数用法

    函数返回值

    成功则不返回值 失败返回-1 失败原因存于errno中可通过perror()打印
    Windows下示例(vs编译)
    #include <stdio.h>
    #include <process.h>
    int main()
    {
    printf("调用D盘Test目录下的hello.exe, 第一个参数为改应用程序的名称 ");
    execl("D:\Test\hello.exe","hello");
    printf("进程已经被递交给了hello.exe这里不会再执行");
    }
    Linux下示例

    示例1

    /* 执行 /bin/ls -al /ect/passwd */
    #include <unistd.h>/*** File: execl.c**/
    main()
    {
    // 执行/bin目录下的ls, 第一参数为程序名ls, 第二个参数为"-al", 第三个参数为"/etc/passwd"
    execl("/bin/ls", "ls", "-al", "/etc/passwd", (char *) 0);
    }

    示例2

    #include <unistd.h>/*** File: execl.c**/
    int main()
    {
    char args[]=" -l";
    // 执行/bin目录下的ls, 第一参数为程序名ls, 第二个参数为"-al", 第三个参数为"/etc/"
    execl("/bin/ls","ls","-al","/etc/",NULL);
    return 0;
    }

    编译并运行

    [cnscn@test c]$ gcc execl.c -o execl
    [cnscn@test c]$ ./execl
    -rw-r--r-- 1 root root 2218 Jan 13 11:36 /etc/passwd
     
     
     
    函数名: execv
    功 能: 装入并运行其它程序的函数
    用 法: int execv(const char *pathname, char * const argv[]);
    环境linuxunix
    表头文件unistd.h
    举例
    char *exec_argv[4];
    exec_argv[0] = ip;
    exec_argv[1] = port;
    exec_argv[2] = NULL;
    if (execv("/bin/telnet", exec_argv) == -1)
    {
    DoDisconnect();
    CheckError(nResult, etTelnetConnect, "Connect");
    }
  • 相关阅读:
    监控日志(把访问超过指定次数的ip预警出来) 青青子佩
    修改文件(通常使用第二种) 青青子佩
    前端使用Promise实现多线程
    CSS实现鼠标移上去按钮表面光影划过特效
    linux安装配置阿里云的yum源
    二维数组的定义
    java中2进制,8进制,16进制的表示
    创建索引
    stream 在 groupingby 之后,对结果数据再进行封装后返回
    java类初始化顺序
  • 原文地址:https://www.cnblogs.com/jeanschen/p/3512609.html
Copyright © 2020-2023  润新知