gpt4 book ai didi

c++ - 如何以编程方式更改进程的执行路径?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:00:34 24 4
gpt4 key购买 nike

我正在开发一个迷你 shell,并尝试动态设置执行路径。我正在使用 setvar() 来设置 PATH,当我用 getvar() 检查它时,它会读取新的 PATH。以下是我尝试执行的两件事:
1. 我把PATH改成了/bin,我知道里面有大部分系统功能,但是没有程序可以运行。我还可以验证路径是否已在环境中设置。我使用 execvp()
执行命令2. 然后我使用 extern char** environ 获取环境并将其传递给 execvpe() 但它仍然不起作用。

最佳答案

我通过使用 istringstream 手动搜索 PATH 然后使用它来执行进程解决了这个问题:

string dir;
string path = get_var("PATH");
istringstream search(path);
while(search.good()) {
getline(search, dir, ':');
if(dir != "") {
struct stat st;
if(dir[dir.length()] != '/') dir.append("/");
string file = dir + cmdArg[0];
//is file in dir?
if(stat(file.c_str(), &st) == 0) {
execvp(file.c_str(), cmdArg);
}
}
}

关于c++ - 如何以编程方式更改进程的执行路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8218505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com