【发布时间】:2019-01-18 22:01:05
【问题描述】:
我必须编写一个c++ 程序“计算文本文件中的行数、单词数和字节数”,所有这些都必须在一个新行中。
我必须在我的 c++ 程序中使用 wc 命令。我设法得到了行数:
char *envp[] = {NULL};
char *command[] = {"wc", "-l", filename.c_str(), NULL};
execve("/usr/bin/wc", command, envp);
在上述陈述之后,我有一个将“-l”替换为“-w”等等。但是我的程序在第一个execve() 语句之后立即结束。
即使在 execve() 语句之后,我如何让我的所有语句执行?
注意:这将是我第一次使用 c++ 程序运行系统命令。
提前谢谢你。
【问题讨论】:
-
char *command[] = {"wc", "-l", filename.c_str(), NULL};不是有效的初始化,“wc”可以是char const *,但不是char * -
我在数组 (char *)"wc" 中执行了类型转换。我决定从代码中省略所有类型转换,因为它们不是我遇到的问题
-
该类型转换也无效,因为字符串命令指针指向的必须是可修改的。
-
阅读 Advanced Linux Programming - 或更新的内容 - 然后是 syscalls(2) 和相关的
man页面。另请阅读Operating Systems: Three Easy Pieces,了解有关操作系统的良好概述。 -
感谢您的参考。
标签: c++ command system wc execve