精华内容
下载资源
问答
  • 2020-03-22 00:12:17

    execlp c语言中执行系统命令的函数

    execlp() 会从PATH环境变量所指的目录中查找符合参数file的文件找到后就执行该文件, 第二个参数开始就是执行这个文件的 args[0],args[1] 最后一个参数用(char*)NULL结束

    android开发中 execlp函数对应android的path路径为

    system/bin/目录

    调用格式

    execlp(“am”, “am”, “start”, “–user”,“0”,"-a", “android.intent.action.VIEW”, “-d”, “http://www.baidu.com”, (char *) NULL);

    execlp(“am”, “am”, “start”, “–user”,“0”, “-n” , “com.itheima.cforktest/com.itheima.cforktest.MainActivity”,(char *) NULL);

    更多相关内容
  • 主要介绍了C语言中的execl()函数与execlp()函数的简单比较,是C语言入门学习中的基础知识,需要的朋友可以参考下
  • C语言execlp函数

    2022-02-16 18:39:54
    #include <unistd.h> #include <fcntl.h> #include <stdio.h> #include <sys/types.h> #include <... // execlp函数 // int execlp(const char *file, const char *arg, ... //

    友链

    #include <unistd.h>
    #include <fcntl.h>
    #include <stdio.h>
    #include <sys/types.h>
    #include <string.h>
    
    int main(int argc, char *argv[])
    {
        // execlp函数
        // int execlp(const char *file, const char *arg, ...
        //                   /* (char  *) NULL */);
        // 该函数和execl不同的地方就在于,该函数会从环境变量中查找可执行文件
        // 而execl需要指定绝对路径
        //      pathname: 要执行的文件的路径(推荐使用绝对路径)
        //      第二个参数是一个字符串,是第一个参数中指定的可执行文件的参数(可以是多个参数)
        //          第一个参数是程序名称(没啥用)
        //          第二个开始才是程序的参数
        //          最后一个参数需要null结束(用于告知execl参数列表的结束——哨兵)
    
        if (fork() > 0)
        {
            printf("I'm parent process: pid: %d\n", getpid());
            sleep(1);
        }
        else
        {
            // 当前是子进程
            // execl("/mnt/c/Users/x/Pictures/code/lesson14/2", "2", NULL);
    
            execlp("ps", "ps", "a", "u", "x", NULL);
    
            printf("I'm child process: %d", getpid());
        }
        for (int i = 0; i < 3; i++)
        {
            printf("i=%d, pid: %d\n", i, getpid());
        }
    }
    
    展开全文
  • execlp函数使用

    千次阅读 2020-12-31 01:32:19
    原文:http://blog.sina.com.cn/s/blog_6a1837e901011167.htmlexeclp(从PATH 环境变量中查找文件并执行)相关函数:fork,execl,execle,execv,execve,execvp表头文件:#include定义函数:int execlp(const char * ...

    原文:http://blog.sina.com.cn/s/blog_6a1837e901011167.html

    execlp(从PATH 环境变量中查找文件并执行)

    相关函数:

    fork,execl,execle,execv,execve,execvp

    表头文件:

    #include

    定义函数:

    int execlp(const char * file,const char * arg,...,(char *)0);

    函数说明:

    execlp()会从PATH 环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个以后的参数当做该文件的argv[0]、argv[1]……,最后一个参数必须用空指针(NULL)作结束。如果用常数0来表示一个空指针,则必须将它强制转换为一个字符指针,否则将它解释为整形参数,如果一个整形数的长度与char * 的长度不同,那么exec函数的实际参数就将出错。如果函数调用成功,进程自己的执行代码就会变成加载程序的代码,execlp()后边的代码也就不会执行了.

    返回值:

    如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno 中。

    错误代码 参考execve()。

    范例:

    #include

    main()

    {

    execlp(“ls”,”ls”,”-al”,”/etc/passwd”,(char *)0);

    }

    执行:

    -rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd

    ------------------------------------*******############*******------------------------------------

    NAME

    execl, execlp, execle, execv, execvp - execute a file

    SYNOPSIS

    #include

    extern char **environ;

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

    eg: execl(“/bin/ls”,”ls”,”-al”,”/etc/passwd”,(char * )0);

    int execlp(const char *file, const char *arg, ...);

    eg: execlp(“ls”,”ls”,”-al”,”/etc/passwd”,(char *)0);

    int execv(const char *path, char *const argv[]);

    eg: char * argv[ ]={“ls”,”-al”,”/etc/passwd”,(char*)0};

    execv(“/bin/ls”,argv);

    int execve(const char * filename,char * const argv[ ],char * const envp[ ]);

    eg: char * argv[ ]={“ls”,”-al”,”/etc/passwd”,(char *)0};

    char * envp[ ]={“PATH=/bin”,0}

    execve(“/bin/ls”,argv,envp);

    int execvp(const char *file, char *const argv[]);

    eg: char * argv[ ] ={ “ls”,”-al”,”/etc/passwd”,0};

    execvp(“ls”,argv);

    展开全文
  • 通过C程序运行Shell命令,使用execlp函数execlp的几个参数分别为:文件名,各个参数,(char*)0其中“各个参数”部分中的第一个参数就是文件名(相当于文件名要输入两遍)最后一个参数写(char*)0就可以了文件b.cpp代码...

    通过C程序运行Shell命令,使用execlp函数

    execlp的几个参数分别为:文件名,各个参数,(char*)0

    其中“各个参数”部分中的第一个参数就是文件名(相当于文件名要输入两遍)

    最后一个参数写(char*)0就可以了

    文件b.cpp代码:

    循环地输入命令→执行命令,直到按下Ctrl+C结束

    #include

    #include

    #include

    #include

    using namespace std;

    #define MAX_PARA_NUMS 10

    #define MAX_CHAR_EACH_PARA 1000

    int split(char* input, char output[MAX_PARA_NUMS][MAX_CHAR_EACH_PARA])

    {

    int counter = 0;

    int len = strlen(input);

    bool bTemp = false;

    int i, j = 0;

    for(i = 0; i < len; i++)

    {

    if(input[i] == ' ')

    {

    if(j != 0 && counter > 0)

    {

    output[counter - 1][j] = '\0';

    }

    bTemp = false;

    }

    else

    {

    if(bTemp == false)

    {

    j = 0;

    counter++;

    bTemp = true;

    }

    output[counter - 1][j] = input[i];

    j++;

    }

    }

    return counter;

    }

    int main()

    {

    int counter = 0;

    char params[MAX_PARA_NUMS][MAX_CHAR_EACH_PARA];

    //使用g++编译文件

    //execlp("g++", "g++", "a.cpp", "-o", "a", (char*)0);

    char buf[4096];

    pid_t pid;

    int status;

    //输入PROMPT字符串

    printf("CONSOLE-X\n");

    printf("=========\n");

    while (fgets(buf, 4096, stdin) != NULL)

    {

    if (buf[strlen(buf) - 1] == '\n')

    {

    buf[strlen(buf) - 1] = '\0';

    }

    pid = fork();

    if (pid < 0)

    {

    printf("fork error");

    }

    else if (pid == 0)

    {

    counter = split(buf, params);

    if(counter != 0)

    {

    printf("---------\n");

    }

    switch(counter)

    {

    case 0: break;

    case 1:

    {

    execlp(params[0], params[0], (char*)0);

    }

    break;

    case 2:

    {

    execlp(params[0], params[0], params[1], (char*)0);

    }

    break;

    case 3:

    {

    execlp(params[0], params[0], params[1], params[2],

    (char*)0);

    }

    break;

    case 4:

    {

    execlp(params[0], params[0], params[1], params[2],

    params[3], (char*)0);

    }

    break;

    case 5:

    {

    execlp(params[0], params[0], params[1], params[2],

    params[3], params[4], (char*)0);

    }

    break;

    case 6:

    {

    execlp(params[0], params[0], params[1], params[2],

    params[3], params[4], params[5], (char*)0);

    }

    break;

    case 7:

    {

    execlp(params[0], params[0], params[1], params[2],

    params[3], params[4], params[5], params[6], (char*)0);

    }

    break;

    case 8:

    {

    execlp(params[0], params[0], params[1], params[2],

    params[3], params[4], params[5], params[6],

    params[7], (char*)0);

    }

    break;

    case 9:

    {

    execlp(params[0], params[0], params[1], params[2],

    params[3], params[4], params[5], params[6],

    params[7], params[8], (char*)0);

    }

    break;

    case 10:

    {

    execlp(params[0], params[0], params[1], params[2],

    params[3], params[4], params[5], params[6],

    params[7], params[8], params[9], (char*)0);

    }

    break;

    default:

    {

    printf("Illegal Input!\n");

    }

    break;

    }

    }

    else

    {

    //输入PROMPT字符串

    //printf("CONSOLE-X> ");

    }

    }

    return 0;

    }

    将b.cpp编译成可执行的文件b(输入命令:g++ b.cpp -o b)

    然后打开文件b,依次输入命令

    ls -ls

    cat a.cpp

    g++ a.cpp -o a

    ./a

    文件a.cpp代码:

    #include

    using namespace std;

    int main()

    {

    cout << "Hello World!" << endl;

    return 0;

    }

    运行结果示例:

    784ce5be475b0c72ff206d664910372f.png

    END

    展开全文
  • exec族函数exec族函数的作用[^1]exec族函数的定义函数原型:exac函数归为带l、带p、带v、带e 四类来说明参数特点一、带l的一类exac函数(l表示list),包括execl、execlp、execle,要求将新程序的每个命令行参数都...
  • linux之execlp函数简单使用

    千次阅读 2021-07-26 17:30:20
    linux之execlp函数简单使用 1.execlp函数:加载一个进程,借助PATH 环境变量 #include <unistd.h> extern char **environ; int execlp(const char *file, const char arg, … / (char *) NULL */); a.参数1为...
  • exec函数族有这几个:execl, execlp, execle, execv, execvp, execvpe 函数原型 #include extern char **environ; int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *...
  • 我不明白execlp()在Linux中的工作原理

    千次阅读 2021-05-12 16:49:44
    这个原型:int execlp(const char *file, const char *arg, ...);说execlp是一个可变参数函数。它需要2个const char *。其余的参数(如果有的话)是要转移到我们要运行的程序的附加参数 – 也是char * – 所有这些都是...
  • 小编典典这个原型:int execlp(const char *file, const char *arg, ...);说execlp是一个变量参数函数。这需要2 const char *。其余的参数(如果有的话)是要移交给我们要运行的程序的其他参数-而且char*-所有这些都是...
  • 关于linuxC语言中创建进程,利用execlp函数执行.c程序问题 对于一个小白来说,这个系统调用真的太难了,完全摸不着头脑啊,一搜execlp函数,全是执行的命令,什么传参硬是没懂。 不过说到底,还是自己C语言的基础太...
  • 本节目标: exec替换进程映像exec关联函数组(execl、execlp、execle、execv、execvp)一,exec替换进程映像在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离。这样的好处是有更多的...
  • 1. execlp函数定义 int execlp(const char *file, const char *arg, ...); 参数说明: file --文件名称,如果包含“/”,则认为路径名,直接查找程序,否则,从PATH环境变量指定的路径中查找程序。 arg --新...
  • 一、exec替换进程映像 在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离。这样的好处是有更多的余地对两种操作进行管理。...二、exec系列函数(execl、execlp、execle、e
  • 1.exec族函数函数的作用: 我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序。当进程调用exec函数时,该... exec函数族分别是:execl, execlp, execle, execv, execvp, execvpe 函数
  • execlp和system的区别

    2020-07-10 11:15:31
    我们都知道,如果想在程序中调用一个别的函数可以这样进行: 1、system函数 2、execlp函数 他们两个最大的区别是: system函数会创建新的进程,而execlp不会创建新的进程。
  • ​ exec函数族主要用于子进程,子进程利用exec函数执行另一个程序,子进程代码和数据被新程序代替,将当前进程的.text、.data 替换为所要加载的程序的.text、....int execlp(const char *file, const char *arg, ...
  • } 执行: /*执行/bin/ls-al /etc/passwd */ -rw-r--r-- 1 root root 705 Sep 3 13 :52/etc/passwd execlp()函数:从PATH环境变量中查找文件并执行 头文件: #include 定义函数: int execlp(const char * file, ...
  • C++之execlp函数用法

    千次阅读 2019-03-31 11:54:29
    execlp函数会从PATH环境变量所指得目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个以后的参数当作该文件的argv[0]、argv[1]......,最后一个参数必须用空指针(NULL)结束。 execlp函数声明如下...
  • 当我们fork()生成子进程后,子进程的代码与数据可以来自其他可执行程序。把磁盘上其他程序的数据以覆盖的形式给子进程。这样子进程就可以执行全新的程序了,这种现象称为程序替换。 文章目录1.替换函数(1....
  • execlp()实现: #include <stdio.h> #include <unistd.h> #include <stdio.h> #include <errno.h> int main(int argc, char *argv[]) { int i; printf("输入格式: 可执行文件名称 -选项...
  • 我们都知道exec函数组可以在程序内执行命令或程序,我用的是execlp这个函数。 重定向到out文件方面,使用dup2函数来实现。 函数的功能我就不在这啰嗦了,百度谷歌一搜一大把,也可以shell输入man+函数来查看具体...
  • } execlp execlp(从PATH 环境变量中查找文件并执行) 相关函数: fork,execl,execle,execv,execve,execvp 表头文件: #include 定义函数: int execlp(const char * file,const char * arg,……);...
  • Linux execlp函数

    千次阅读 2018-08-03 10:32:15
    execlp 从PATH 环境变量中查找文件并执行   定义: int execlp(const char * file,const char * arg,……);   头文件: #include&lt;unistd.h&gt;   说明: execlp()会从PATH 环境变量所指的...
  • This page包括大量的使用示例....编辑:从链接 从链路的代码段添加的代码片段上方static void show_info_page(const char *git_cmd){const char *page = cmd_to_page(git_cmd);...execlp("info", "i...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,953
精华内容 4,381
关键字:

execlp

友情链接: 密度聚类dbscan.rar