首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Execvp(argv[1],argv),不返回此类文件或目录

Execvp(argv[1], argv)是一个系统调用函数,用于在Linux系统中执行一个外部程序。它接受两个参数,第一个参数是要执行的程序的路径,第二个参数是一个字符串数组,包含了要传递给该程序的命令行参数。

该函数的作用是将当前进程替换为指定的外部程序,并传递给该程序相应的命令行参数。它会在新的进程空间中加载并执行指定的程序,原有的进程代码和数据将被完全替换。

Execvp函数的使用可以实现以下功能:

  • 执行其他可执行文件:可以通过指定不同的程序路径来执行不同的可执行文件,例如执行系统命令、调用其他应用程序等。
  • 传递命令行参数:可以通过第二个参数传递命令行参数给被执行的程序,使得程序能够根据参数的不同执行不同的逻辑。
  • 实现进程替换:通过调用Execvp函数,当前进程会被指定的程序替换,从而实现进程的替换和重新加载。

Execvp函数的优势:

  • 灵活性:Execvp函数可以执行任意可执行文件,使得开发人员可以根据需求选择合适的程序来执行。
  • 参数传递:通过命令行参数的传递,可以实现不同程序之间的数据交互和通信。
  • 进程替换:Execvp函数可以实现进程的替换,使得程序能够在运行时动态加载其他程序,从而实现更复杂的功能。

Execvp函数的应用场景:

  • 系统命令执行:可以通过Execvp函数执行系统命令,例如执行shell脚本、调用系统工具等。
  • 多进程编程:在多进程编程中,可以使用Execvp函数在子进程中执行其他程序,实现不同进程之间的协作和任务分配。
  • 动态加载:通过Execvp函数可以实现动态加载其他程序,例如插件系统、动态库加载等。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云函数(SCF):https://cloud.tencent.com/product/scf
  • 云容器实例(TCI):https://cloud.tencent.com/product/tci
  • 云托管(TKE):https://cloud.tencent.com/product/tke
  • 云原生数据库(TDSQL):https://cloud.tencent.com/product/tdsql
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 人工智能(AI):https://cloud.tencent.com/product/ai
  • 物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 区块链(BCS):https://cloud.tencent.com/product/bcs
  • 视频处理(VOD):https://cloud.tencent.com/product/vod
  • 音视频通信(TRTC):https://cloud.tencent.com/product/trtc
  • 网络安全(SSL):https://cloud.tencent.com/product/ssl
  • 移动开发(MPS):https://cloud.tencent.com/product/mps
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UNIX高级环境编程 第三次实验 实现带参数的简单Shell

当fork()函数返回值为0时表示处 于子进程中;而返回值大于0时表示处于父进程中,此时的返回值是子进程的进程id。因此,fork()的返回值可以用来划分仅仅适合父进程 和子进程执行的程序段。...因此在token为时,设置相应的flag:0为正常参数,1代表输入重定向,2代表输出重定向。...**file:**如果参数file中包含/,则就将其视为路径名,否则就按 PATH环境变量,在它所指定的各目录中搜寻可执行文件 excel 、execv都是需要给出可执行文件名的绝对路径,execlp、...redirect_stdout中处理,execvp填入可执行文件参数,子进程开始执行,若出错才会执行下面的execvp error打印错误语句,waitpid等 待特定fork后子进程号结束,若出错则同样做出错打印信息处理...,我们可以特 判将参数argv[1]等于使用getenv("HOME")获取家目录的环境变量: if (!

90120

Linux模拟实现【简易版bash】

execvp(); //具体细节先忽略 exit(168); //替换失败后返回,这个值可以自定义 [0, 255] } //父进程等待子进程终止,回收僵尸进程...pid_t id = fork(); if(id == 0) { //直接执行程序替换,这里使用 execvp execvp(argv[0], argv); exit(168); //替换失败后返回...>、>>、< 这三个字符,如果有,就具体问题具体分析,完成重定向 具体实现步骤: 判断字符串中是否含有目标字符,如果有,就置当前位置为 '\0‘,其后半部分参与指令分割 后半部分就是文件名,在打开文件时需要使用...; //追加 } //直接执行程序替换,这里使用 execvp execvp(argv[0], argv); exit(168); //替换失败后返回 } 具体效果(A.txt 为空...; //追加 } //直接执行程序替换,这里使用 execvp execvp(argv[0], argv); exit(168); //替换失败后返回

25220

Linux进程控制【进程程序替换】

注意: 这七个函数只有在程序替换失败后才会有返回值,返回 -1,程序替换成功后返回 程序都已经替换成功,后续代码也都将被替换,所以成功后的返回值也就没意义了 2.1、函数1 execl 首先是最简单的替换函数...execl #include int execl(const char* path, const char* arg, ...); 函数解读 返回值:替换失败返回 -1 参数1...表示可变参数列表,可以传递多个参数 注意: 参数选项传递结束传递参数,都要在最后加上 NULL,类似于字符串的 '\0' #include #include <unistd.h...execv 加个 p 也能实现自动查询替换,即 execvp #include int execvp(const char* file, char* const argv[])...等函数,无论什么语言的文件流操作函数都需要调用它们 ---- 2.7、函数7 execvpe 对 execvp 的再一层封装,使用方法与 execvp 一致,不过最后一个参数可以传递环境变量表 #

20920

极简shell制作

简单配置Linux文件   首先,再开始项目之前,需要先简单配置一下Linux文件,选择一个位置,创建本次项目的目录: mkdir myshell#名字随意,这里方便区分命名myshell   如图所示在该目录下...其实他们的区别很明显,一种 字符串不带空格,一种字符串 带一个多个空格,比如:   使用C语言的scanf显然是行不通的,在这里我推荐使用 fgets 接口,可以接收输入的空格:   返回值表示输入的字符串...第二个参数表示 以什么字符字符串为结尾进行切割,返回值表示 返回切割后的子串,如果查找不到切割点了,就会返回NULL。   ...带 ‘v’ 的接口也有三个,execvp 接口是最好的选择,为什么大家可以自己思考一下,很简单: execvp(argv[0], argv);//根据命令在环境变量里查找,在根据选项做出对应的动作   .../处理cd 命令 } return ret; }   处理cd 命令之前我们得先了解cd 命令有哪些特殊表示,cd 命令无外乎:cd -,cd ~,cd /工作目录文件/,cd。

11510

【Linux程序设计】之进程控制&守护进程

getpid函数说明如下: 所需头文件 #include 函数功能 取得当前进程的进程号 函数原型 pid_t getpid(void) 函数传入值 无 返回值 成功返回当前进程的标识符...所需头文件 所需头文件 #include 所需头文件 函数功能 取得当前进程的父进程号 函数原型 pid_t getppid(void) 函数传入值 无 返回值 成功返回当前进程的父进程标识符...所需头文件 #include 功能 建立一个新的进程 函数原型 pid_t fork(void) 传入值 无 返回值 执行成功在子进程中返回0,在父进程中返回子进程的pid,失败返回...(const char *file,const char *arg, ...) int execvp(const char *file,char *const argv[] ) 返回值 -1出错 而事实上...("ps","ps","-o","pid,ppid",NULL); 9 execvp("ps",ps_argv); 二、僵尸进程 1、设计一个程序,要求创建一个子进程,子进程显示自己的进程号(PID)后暂停一段时间

2K20

#抬抬小手学Python# os 库、 sys 库、getopt 库 与 filecmp 库

(path) 返回文件名 os.path.join(path1[, path2[, ...]])...把目录文件名合成一个路径 os.path.exists(path) 如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False。...os.path.isfile(path) 判断路径是否为文件 os.path.isdir(path) 判断路径是否为目录 os.path.getatime(path) 返回最近访问时间(浮点型秒数) os.path.getmtime...(path) 返回最近文件修改时间 os.path.getsize(path) 返回文件大小,如果文件不存在就返回错误 以上函数的使用过程比较容易理解,导入模块之后,调用即可。...函数返回包含 3 个 list 元素的元组,分别表示匹配、匹配以及错误的文件列表。 错误的文件指的是不存在的文件文件被琐定不可读,没权限读文件,或者由于其他原因访问不了该文件

61020

Linux执行当前目录下的命令要使用.

为什么Linux执行当前目录下的可执行文件要使用'./'前缀呢? 必须使用./的原因? 把'.'排除在root用户的PATH之外的原因? 必须使用./的原因?...因为shell使用了fork() + execvp/execlp函数来启动新程序,这时如果没有使用绝对路径(‘/‘开头)或者使用’....int execvp(const char *filename, char *const argv[]); 那么,问题来了。root用户的PATH通常是包含‘.’的,也就是说包含当前目录。...而我们通常是使用root用户登录,因此通常就无法在PATH中找到要执行的文件,就会找不到啦。 把’.'排除在root用户的PATH之外的原因?...防止root用户不小心执行了当前工作目录下与标准命令同名的恶意程序。 不小心把命令拼错,执行了不想执行的程序(例如ls写成了sl)

1.7K20

linux系统编程之进程(三):exec系列函数和system函数

返回值:成功返回0,失败返回-1 execl,execlp,execle(都带“l”)的参数个数是可变的,参数以一个空指针结束。...execv、execvp和execvpe的第二个参数是一个字符串数组,新程序在启动时会把在argv数组中给定的参数传递到main 名字含字母“p”的函数会搜索PATH环境变量去查找新程序的可执行文件...如果可执行文件不在PATH定义的路径上,就必须把包括子目录在内的绝对文件名做为一个参数传递给这些函数。 名字最后一个字母为"e"的函数可以自设环境变量。...根目录 umask 文件锁 进程信号屏蔽 未处理信号 资源限制 进程时间 而下面属性是发生变化的: 文件描述符如果存在close-on-exec标记的话,那么打开的文件描述符会被关闭。...:     如果无法启动shell运行命令,system将返回127;出现不能执行system调用的其他错误时返回-1

2.1K60

【Linux】开始学习进程替换吧!

—— 尾田荣一郎《海贼王》 开始学习进程替换吧 1 前言 通过学习进程替换,我们可以体会到多语言混搭的快乐,可以从C语言直接蹦到python ,也可以从c++里运行java代码。是不是很厉害!...,char *const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char...而且我们不用关心exec*函数的返回值,只要替换成功了,就不会向后运行(也就用不到它的返回值了),只要继续运行那一定就是替换失败了!!! 那如果不想替换掉我们的程序,还想要打开一个新程序呢???...int execvp(const char *file, char *const argv[]) 带p含义是可以传入文件路径,可以直接告诉exec*需要执行谁就可以了 本质就是:查找这个程序,系统会在系统环境变量...}; execvp("ls",argv); 这个 int execlp(const char *file, const char *arg, …) 同理!!!

8310

C++中的exec()函数

exec()函数在C++中是一个进程控制函数,用于创建新进程执行其他程序命令行指令。exec()函数可以替换当前进程的代码和数据,创建新的进程运行其他程序。...比如,这是一个死循环程序(目的是为了观察,让它活得久一点): #include int main() { int a = 0; while (1) {..., char *const argv[]) 参数: path参数表示你要启动程序的名称,包括路径名; arg参数表示启动程序所带的参数,一般第一个参数为要执行命令名 返回值:成功返回0,失败返回-1 上述...[]); ① 查找方式:上表其中前4个函数的查找方式都是完整的文件目录路径,而最后2个函数(也就是以p结尾的两个函数)可以只给出文件名,系统就会自动从环境变量“$PATH”所指出的路径中进行查找。...读者可以观察execl、execle、execlp的语法与execv、execve、execvp的区别。 ③ 环境变量:exec函数族使用了系统默认的环境变量,也可以传入指定的环境变量。

25120

Linux系统编程-进程创建(fork)、外部程序调用(exec)

fork函数的返回值如下: 1、在父进程中,fork返回新创建的子进程的PID号。 2、在子进程中,fork返回0; 3、如果出现错误,fork返回一个负值。...[]); int execvp(const char *file, char *const argv[]); p表示支持从环境变量里搜索可执行文件....思路: 父进程扫描目录,得到目录下的文件名称,在传递给子进程,子进程调用eog命令实现图片显示,父进程里2秒钟之后就杀死子进程,再读取目录下下一个文件,再传递给子进程……… #include <stdio.h...打开目录*/ DIR *dir=opendir(argv[1]); if(dir==NULL) { printf("%s 目录打开失败....创建管道文件*/ int fds[2]; pipe(fds); pid_t pid; struct dirent *dir_info; AA: /*循环遍历目录

2.8K20
领券