【发布时间】:2019-04-23 17:35:19
【问题描述】:
我正在我的主函数中运行系统调用,我想知道我是否可以在主函数中逐行读取系统调用的命令行输出。
我一直在网上寻找有关如何执行此操作的任何提示或想法,但我找不到任何提示或想法。需要注意的一点是,我不希望将输出写入文件然后从该文件中读取,而是逐行读取命令行输出。
int main(int argc, char const *argv[]) {
system("ls -al");
return 0;
}
例如,在上面的代码中,我想通过这个C函数打印当前目录下的所有文件。有了这些信息,我只想打印 4 月更新的那些(在第 6 列中以“Apr”区分)。我是否可以逐行读取输出,将行拆分为数组并检查指定的列是否为“Apr”,如果是,如何?任何和所有的帮助/建议将不胜感激。
【问题讨论】:
-
现在的问题是 - 你想在你的系统 shell 中使用
system("ls -al | grep Apr | blabla")进行过滤还是你想使用popen("ls -al");并通过读取来自FILE*的行来过滤输出popen使用一些strstr或类似方法返回的对象?无论如何,这太宽泛了。 |再想一想,我认为您只需搜索popen。 -
我很抱歉没有更清楚地说明。我想通过读取行来过滤输出,而不仅仅是 grep 它,因为我还想对具有整数输出的其他系统命令输出执行此操作,并比较这些整数输出是否大于给定数字。
-
这听起来像是一个 XY 问题。也许你真的想list the contents of a directory 然后check the modification date of each file。
-
此类任务最好使用
python或shell等脚本语言完成,而不是c -
@balki 虽然在 Python 这样的语言中肯定容易得多,但我需要用 C 来完成。
标签: c