Exec()从文件读取
Exec() read from file
我正在创建一个基本的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。您可以使用getpwuid
或getpwuid_r
方便地获取此信息。
相关文章:
- 正在将csv文件读取为双精度矢量
- 将从格式化文本文件读取的文本数据存储到链表
- C++ 读取文件读取文件不正确
- 使用对象文件读取三角形数据网格
- 如何减慢从 BVH 文件读取的 opengl 动画?
- 从文件读取,并写入函数C++中的数组
- 从对象C++中的文件读取内容时出现分段错误
- 从文件读取并通过矢量输出到控制台
- 尝试将字符串从文件读取到无符号字符向量中
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 简化文件读取的函数
- 如何将逗号分隔的文件读取为 2D int 数组?
- 在 c++ 中将数据从文件读取到队列中
- 'std::wstring_convert'尽可能多地转换(从 UTF8 文件读取块)
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 文件读取C++包括空格键
- 从文件读取时未将值推回矢量
- 从文件 C++ 读取时的无限循环
- 从同一文件读取和写入?
- 从.txt文件读取到C++中的双精度向量