在C程序中使用shell命令还是编写使用某种形式的C代码的shell脚本更好?
我目前正在做一个小项目,目的是自动化一个特定的任务。 但要做到这一点,我需要Shell命令(Linux)和另一种语言(C)来处理Shell命令的输出。但我的目标是使它完全自动化,这样当我运行脚本/程序时,我只给它我的参数,一切都为我完成 所以我想知道,在以下两种情况中,哪一种是最好的选择:在C程序中使用shell命令还是编写使用某种形式的C代码的shell脚本更好?,c,shell,C,Shell,我目前正在做一个小项目,目的是自动化一个特定的任务。 但要做到这一点,我需要Shell命令(Linux)和另一种语言(C)来处理Shell命令的输出。但我的目标是使它完全自动化,这样当我运行脚本/程序时,我只给它我的参数,一切都为我完成 所以我想知道,在以下两种情况中,哪一种是最好的选择: 编写一个小Shell脚本,首先运行我需要的Shell命令,并将这些命令的输出重定向到一个.txt文件中,然后执行我的C程序,该程序将按照我的要求处理输出 或 只编写一个C程序,使用system()和popen
shell script result | ./main
没有通用的答案。这在很大程度上取决于要自动化的“特定任务”,以及其他主题,如可移植性、时间限制和速度要求。那么,您到底希望以何种方式自动化哪些任务呢?您不需要使用临时的.txt文件。编写C程序来处理stdin并写入stdout,这样就可以通过管道传输数据。也许会使它变得普遍有用和可重用。也许未来的shell用户会像今天使用sed、awk或更少的软件一样使用您的程序就我个人而言,我不喜欢
system()
等。是的,我想我会尝试将它直接导入我的C程序,但我以前从未这样做过,所以在我制造一场彻底的灾难之前,我只需要读一点关于它的知识。@lucasdctr:它没有魔力。shell的管道(如grep foo bar.txt | less
)只是将前一个程序的stdout
转发给后者stdin
和stdout
都是FILE*
,就像一个“正常”的打开流一样。