gpt4 book ai didi

c++ - exec() 从文件中读取

转载 作者:太空宇宙 更新时间:2023-11-04 13:27:20 25 4
gpt4 key购买 nike

我正在创建一个基本的 shell。我一直在尝试让 exec() 从输入文件中读入。这就是我所拥有的。我不确定应该向 execvp() 提供哪些参数。在这里,stringList[0] 将类似于“ls”或“cat”。如果 stringList[0] 是 ls,文件将包含类似 ls -a -l 的内容

int fd = open(iFile, O_RDONLY);
dup2(fd, 0);
close(fd);

execvp(stringList[0], ...);
cout << "Exec error!\n";
exit(1);

最佳答案

听起来您想从文件中读取命令,然后执行该命令。如果那是您的目标,您实际上应该执行 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 获取此信息。

关于c++ - exec() 从文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32913684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com