Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C程序中使用shell命令还是编写使用某种形式的C代码的shell脚本更好?_C_Shell - Fatal编程技术网

在C程序中使用shell命令还是编写使用某种形式的C代码的shell脚本更好?

在C程序中使用shell命令还是编写使用某种形式的C代码的shell脚本更好?,c,shell,C,Shell,我目前正在做一个小项目,目的是自动化一个特定的任务。 但要做到这一点,我需要Shell命令(Linux)和另一种语言(C)来处理Shell命令的输出。但我的目标是使它完全自动化,这样当我运行脚本/程序时,我只给它我的参数,一切都为我完成 所以我想知道,在以下两种情况中,哪一种是最好的选择: 编写一个小Shell脚本,首先运行我需要的Shell命令,并将这些命令的输出重定向到一个.txt文件中,然后执行我的C程序,该程序将按照我的要求处理输出 或 只编写一个C程序,使用system()和popen

我目前正在做一个小项目,目的是自动化一个特定的任务。 但要做到这一点,我需要Shell命令(Linux)和另一种语言(C)来处理Shell命令的输出。但我的目标是使它完全自动化,这样当我运行脚本/程序时,我只给它我的参数,一切都为我完成

所以我想知道,在以下两种情况中,哪一种是最好的选择:

  • 编写一个小Shell脚本,首先运行我需要的Shell命令,并将这些命令的输出重定向到一个.txt文件中,然后执行我的C程序,该程序将按照我的要求处理输出
  • 只编写一个C程序,使用system()和popen()函数完成所有工作,但我不太熟悉这种方法,因为我以前从未使用过这些函数,而且看起来有点混乱
  • 当然,如果你有任何建议,除了我提到的两个,请告诉我!我做这个项目部分是为了学习如何使用Shell脚本和C,因为我用python做了一些类似但不太“复杂”(如果我们可以称之为如此简单的项目复杂的话)的事情,但我并不满意,我更喜欢C而不是python作为我将来使用的编码工具

    提前谢谢

  • 为什么不在最后使用shell脚本调用您的程序呢
  • 它将运行它应该运行的所有内容,最后,它不会将结果重定向到txt,而是直接将结果重定向到您的C程序stdin中,其简单程度如下:

    shell script result | ./main 
    

    没有通用的答案。这在很大程度上取决于要自动化的“特定任务”,以及其他主题,如可移植性、时间限制和速度要求。那么,您到底希望以何种方式自动化哪些任务呢?您不需要使用临时的.txt文件。编写C程序来处理stdin并写入stdout,这样就可以通过管道传输数据。也许会使它变得普遍有用和可重用。也许未来的shell用户会像今天使用sed、awk或更少的软件一样使用您的程序就我个人而言,我不喜欢
    system()
    等。是的,我想我会尝试将它直接导入我的C程序,但我以前从未这样做过,所以在我制造一场彻底的灾难之前,我只需要读一点关于它的知识。@lucasdctr:它没有魔力。shell的管道(如
    grep foo bar.txt | less
    )只是将前一个程序的
    stdout
    转发给后者
    stdin
    stdout
    都是
    FILE*
    ,就像一个“正常”的打开流一样。