首页 > 解决方案 > 在 cpp 中使用 exec() 在其他目录上执行 shell 命令 (ls)

问题描述

我想使用 exec 系统调用来计算主目录中的目录/文件。我无法理解的是我在哪里可以指定 ls 应该应用在哪个目录上。这是我尝试过的:

cout<<execle("/bin/ls","bin/ls",NULL);

它打印当前目录中的文件。我将路径作为环境变量传递,但这也无济于事。也许那是用来指定在哪里可以找到传递给 execl 的可执行文件,

         char *env2[]={"PATH=/home/username", NULL};
         cout<<execle("/bin/ls","bin/ls",NULL, env2);

我虽然在调用 execl 之前更改目录会有所帮助,但是找不到简单的方法来做到这一点。我如何指定应该执行 ls 的目录。注意:我使用的是 ubuntu linux

标签: c++linuxshelloperating-system

解决方案


尝试使用 execvp()

cout << execvp("ls", ["ls", "/home/username"])

execvp 将您尝试执行的命令作为其参数,第二个参数是一个列表,包括该命令和为正在执行的命令提供的参数列表。


推荐阅读