-
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()函数
2020-09-03 09:30:15主要介绍了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);
-
Linux下的C程序,使用函数execlp运行Shell命令
2021-03-20 08:37:10通过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;
}
运行结果示例:
END
-
exec族函数————execl, execlp, execle, execv, execvp, execvpe
2021-04-11 17:58:27exec族函数exec族函数的作用[^1]exec族函数的定义函数原型:exac函数归为带l、带p、带v、带e 四类来说明参数特点一、带l的一类exac函数(l表示list),包括execl、execlp、execle,要求将新程序的每个命令行参数都... -
linux之execlp函数简单使用
2021-07-26 17:30:20linux之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 )
2022-05-19 17:35:37exec函数族有这几个: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 * – 所有这些都是... -
我不明白execlp()在Linux中的工作方式
2021-05-12 16:50:38小编典典这个原型:int execlp(const char *file, const char *arg, ...);说execlp是一个变量参数函数。这需要2 const char *。其余的参数(如果有的话)是要移交给我们要运行的程序的其他参数-而且char*-所有这些都是... -
关于linuxC语言中创建进程,利用execlp函数执行.c程序问题
2020-04-14 20:24:22关于linuxC语言中创建进程,利用execlp函数执行.c程序问题 对于一个小白来说,这个系统调用真的太难了,完全摸不着头脑啊,一搜execlp函数,全是执行的命令,什么传参硬是没懂。 不过说到底,还是自己C语言的基础太... -
linux系统编程之进程(五):exec系列函数(execl,execlp,execle,execv,execvp)使用
2020-12-22 06:25:16本节目标: exec替换进程映像exec关联函数组(execl、execlp、execle、execv、execvp)一,exec替换进程映像在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离。这样的好处是有更多的... -
【Linux】execlp通过结构体传参
2020-04-17 16:33:051. execlp函数定义 int execlp(const char *file, const char *arg, ...); 参数说明: file --文件名称,如果包含“/”,则认为路径名,直接查找程序,否则,从PATH环境变量指定的路径中查找程序。 arg --新... -
exec系列函数(execl,execlp,execle,execv,execvp)使用
2020-11-21 11:33:36一、exec替换进程映像 在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离。这样的好处是有更多的余地对两种操作进行管理。...二、exec系列函数(execl、execlp、execle、e -
10.linux进程---exec族函数(execl, execlp, execle, execv, execvp, execvpe)
2021-08-16 13:07:471.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函数族介绍以及execl和execlp函数具体使用
2020-11-11 17:27:40 exec函数族主要用于子进程,子进程利用exec函数执行另一个程序,子进程代码和数据被新程序代替,将当前进程的.text、.data 替换为所要加载的程序的.text、....int execlp(const char *file, const char *arg, ... -
Linux下execl函数与execlp函数的具体详细用法
2020-12-10 14:53:43} 执行: /*执行/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:29execlp函数会从PATH环境变量所指得目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个以后的参数当作该文件的argv[0]、argv[1]......,最后一个参数必须用空指针(NULL)结束。 execlp函数声明如下... -
Linux_进程替换(execl、execlp、execv、execle)
2021-10-09 09:17:40当我们fork()生成子进程后,子进程的代码与数据可以来自其他可执行程序。把磁盘上其他程序的数据以覆盖的形式给子进程。这样子进程就可以执行全新的程序了,这种现象称为程序替换。 文章目录1.替换函数(1.... -
分别用execlp()、execl()和execv()函数实现命令“find / -name abc”的功能
2021-10-28 21:26:03execlp()实现: #include <stdio.h> #include <unistd.h> #include <stdio.h> #include <errno.h> int main(int argc, char *argv[]) { int i; printf("输入格式: 可执行文件名称 -选项... -
使用dup2重定向execlp函数
2019-08-18 17:00:10我们都知道exec函数组可以在程序内执行命令或程序,我用的是execlp这个函数。 重定向到out文件方面,使用dup2函数来实现。 函数的功能我就不在这啰嗦了,百度谷歌一搜一大把,也可以shell输入man+函数来查看具体... -
Linux环境编程–waitpid与fork与execlp
2021-02-27 20:10:47} 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:15execlp 从PATH 环境变量中查找文件并执行 定义: int execlp(const char * file,const char * arg,……); 头文件: #include<unistd.h> 说明: execlp()会从PATH 环境变量所指的... -
如何使用execlp将命令行参数传递给C程序
2021-05-21 04:59:29This page包括大量的使用示例....编辑:从链接 从链路的代码段添加的代码片段上方static void show_info_page(const char *git_cmd){const char *page = cmd_to_page(git_cmd);...execlp("info", "i...