如何通过程序更改进程的执行路径
How do I change the execution PATH of a process programatically?
我正在开发一个迷你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);
}
}
}
相关文章:
- 无法获取进程 ID 4 (ntoskrnl.exe) 的可执行路径
- CMake将依赖项复制到可执行输出路径
- 定义在其中执行不同代码路径的代码节
- 获取自己的可执行文件的当前路径 (C++)
- 只有已知执行路径的模板编译
- 在C 中使用AssocqueryString获取可执行路径
- 如何将执行路径与文件路径和参数分开
- 任务管理器如何获取进程的命令行可执行路径
- 如何对字符串执行路径操作
- C++ 执行路径中带有空格的.exe
- 获取系统本机形式的可执行路径
- 获取cmake可执行路径以在自定义命令上运行它
- 调试执行路径中缺少msvcr100d.dll和msvcp100d.dll
- C/ c++ -可执行路径
- 如何通过程序更改进程的执行路径
- 查找Mac上的执行路径
- 从C++中的可执行路径(或从hWnd或从pid)获取程序名称
- c++在execv中运行grep搜索可执行路径
- 如何确保在编译时没有执行路径到达某一行
- 在c++中有没有办法允许不同的数据类型有不同的执行路径?