使用Execv进行基本I/O
Using execv to do basic I/O
我正在尝试使用execv()允许我从终端中读取输出文件,outputfile.txt。我遇到的问题是它根本不起作用,我不知道我是否正确使用它。
到目前为止我的代码:
void my_shell() {
char* args[2];
args[0] = "/usr/bin/tee";
args[1] = "outputfile.txt";
execv(args[0], &args[0]);
}
int main() {
cout << "%";
//string input;
pid_t pid, waitPID;
int status = 0;
pid = fork();
if (pid == 0) {
my_shell();
}
else if (pid < 0) {
cout << "Unable to fork" << endl;
exit(-1);
}
while ((waitPID = wait(&status)) > 0) {
}
return 0;
}
目前正在做的是根本没有发生任何事情。该程序可以很好地分配,但是MY_SHELL中的内容根本没有做任何事情。我在做什么错?
您错过了NULL
终结器到args
。
void my_shell() {
char* args[3];
args[0] = "/usr/bin/tee";
args[1] = "outputfile.txt";
args[2] = NULL;
execv(args[0], args);
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- C++:TypeDef使用元组
- 使用std::multimap迭代器创建std::list
- 从不同线程使用int64的不同字节安全吗
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么在全局范围内使用"extern int a"似乎不行?
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用Google Mock来模拟gettimeofday()
- 如何使用默认参数等选择模板专业化
- 为什么使用 "this" 指针调用派生成员函数?
- 使用新行和不使用新行读取文件
- 使用 execv 从C++代码执行的 Linux 脚本失败
- 如何修复使用execv和forks无法工作的循环
- 使用单独的参数调用"boost::process::system()"时,获取"execv
- 使用管道通过 TTY、PTY 或 execv() 运行 shell(例如 sh)有什么区别?
- C++:execv/execvp未使用现有PID
- 使用Execv进行基本I/O
- 使用execv和shell exec时出现问题
- 如何正确使用pipe, fork和execv来启动二级程序并与之交互