我正在尝试使用execve命令运行ls命令。目前,我正在使用以下参数运行它:
execve(args[0], args, env_args)
//args looks like {"ls", "-l", "-a", NULL}
//env_args looks like {"PATH=/bin", "USER=me", NULL}
我原本期望这个程序会使用我的新的env_args运行ls命令,也就是说它会在我的PATH中查找ls。但是,实际上,这段代码实际上没有做任何事情。当我运行这段代码时,它只是返回到我的命令提示符而没有任何输出。
使用相同的args[],我用execvp执行ls命令并且成功搜索了当前路径。
你能告诉我我做错了什么吗?
我试图编写自己的shell程序,以便我可以创建和导出自己的环境,并让exec使用我在char**中定义的环境。实质上,我正在编写自己的函数来操作env_args以添加和删除变量,并且当我调用exec时,我希望能够在{"ls", "-l", NULL}上调用exec,并在我的新环境路径变量中查找名为ls的有效程序。我希望这解释了我正在做的事情。我不认为extern environ变量在这种情况下适用于我。
ls
在你的机器上在哪里找到? - Jonathan Leffler