加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何将execv用于其位置未知的命令?

发布时间:2020-12-15 21:14:35 所属栏目:安全 来源:网络整理
导读:假设我想生成一个进程并运行execv来执行像ls这样的命令然后我就是这样做的: char * const parm[] = { "/usr/bin/ls","-l",NULL };if ((pid = vfork()) == -1) perror("fork error");else if (pid == 0){ execv("/usr/bin/ls",parm);} 现在的问题是,我在这里
假设我想生成一个进程并运行execv来执行像ls这样的命令然后我就是这样做的:

char * const parm[] = { "/usr/bin/ls","-l",NULL };
if ((pid = vfork()) == -1)
    perror("fork error");
else if (pid == 0)
{
    execv("/usr/bin/ls",parm);
}

现在的问题是,我在这里硬编码了ls命令所在的位置(/usr/bin/ls).现在假设我不知道特定命令在哪里并且想要执行它然后我该怎么做呢?我知道在常规shell中查找PATH变量以实现相同,但是在使用execv的C程序的情况下我该如何实现呢?

解决方法

使用 execvp(3)而不是execv(3). execvp和execlp分别与execv和execl完全相同,只是它们在$PATH环境变量中搜索可执行文件(有关详细信息,请参见手册页).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读