相关疑难解决方法(0)

使用execve的新路径来运行ls命令

我试图使用execve来运行ls命令.目前我正在使用以下参数运行它:

execve(args[0], args, env_args)
//args looks like {"ls", "-l", "-a", NULL}
//env_args looks like {"PATH=/bin", "USER=me", NULL}
Run Code Online (Sandbox Code Playgroud)

我期望这样做是使用我的新env_args运行ls命令,这意味着它将在我的PATH中查找ls.但是,这段代码实际上没有做任何事情,当我运行代码时它只返回我的命令提示符而没有输出.

使用相同的args []我使用execvp并且ls工作并搜索我当前的路径.

你能告诉我我做错了什么吗?

我想要做的是编写我自己的shell程序,在那里我可以创建和导出我自己的环境,并让exec使用我在char**中定义的环境.本质上我正在编写自己的函数来操作env_args来添加和删除变量,当我调用exec时我希望能够在{"ls"," - l",NULL}上调用exec并让它看不起我的新环境名为ls的有效程序的路径变量.我希望这能解释我的工作做得更好.在这种情况下,我不认为extern environ var对我有用.

c path exec execve

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×1

exec ×1

execve ×1

path ×1