Exec()从文件中读取

时间:2015-10-02 18:35:53

标签: c++ exec dup2

我正在创建一个基本的shell。我一直试图让exec()从输入文件读入。这就是我所拥有的。我不确定我应该给execvp()提供什么参数。这里,stringList [0]将是“ls”或“cat”的行。如果stringList [0]是ls,则文件将包含ls -a -l <​​/ p>行的内容

redirect_uri

1 个答案:

答案 0 :(得分:0)

听起来您想从文件中读取命令然后执行该命令。如果这是您的目标,那么您应该实际执行 shell

open然后dup2的当前方法不会导致exec从文件中读取,因为exec永远不会从标准输入读取。它只从可执行文件中读取(加载程序映像)。您当前的方法是重定向输入,因此如果exec成功,新程序将iFile作为其标准输入文件。

你可以这样做:

execl(shell, basename(shell), iFile, (char*)0);

示例:如果iFile是字符串"myCommand.sh"shell/bin/bash,那么basename(shell)bash,这类似在命令行上运行它:

$ bash myCommand.sh

对于shell,您可能希望使用当前用户的默认shell。您可以使用getpwuidgetpwuid_r

轻松获取此信息