gpt4 book ai didi

无法读取 bash 行生成的文件

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:59 24 4
gpt4 key购买 nike

我写了一段 C 代码,在这段 C 代码中使用了 bash 脚本行,我是这样写的:

printf("wc -l < smallerthan > number_lines\n");   
if( (fr=fopen(fname_rcut,"r"))==NULL ) { printf("error in rcut file: %s\n",fname_rcut); exit(1); }

我需要读取从“smallerthan”文件生成的文件“number_lines”,问题是当我获取 C 代码以自动运行时,如下所示:

$gcc myC_code.c -lm     
$./a.out > run.sh
$source run.sh

然后如果我查看run.sh

& vi run.sh 

我在 run.sh 中得到了这个:

    wc -l < smallerthan > number_lines  
ls

error in rcut file: /home/number_lines

这意味着到目前为止代码还没有找到我的“number_lines”文件,因为 number_lines 文件尚未出现,但是如果我复制该行并单独运行它,而不是“自动”,那么它可以工作,因为该文件现在在那里。

我的问题是,如何让我的代码自动运行并让我的 C 代码读取由 bash 行生成的文件,或者如何生成文件并正确读取它?

任何想法都可以,因为我真的是编程新手,我必须在 C 中使用 bash 来完成我的工作。

注意:以上只是我的 C 代码的一小部分,但我在 C 代码中使用了几行 bash。

最佳答案

您的代码中有许多观察结果。我假设 char *fname_rcut 确实指向 "/home/number_lines"

第一个观察:如果你把命令写入一个文件,它们将不会被执行。所以文件number_lines只有在你运行run.sh之后才会被创建。因此,该文件在您的 C 程序执行期间将不存在。您可能会查看 int system(const char *command)(man 3 system)。

第二个观察:/home/number_lines 可能不是正确的文件名。它可能是 /home/your_name/number_lines;尝试输入 pwd 以查看确切的目录名称。

第三个观察:为什么要source run.sh? Source 在当前 shell 中执行文件。通常不需要这样做。

关于无法读取 bash 行生成的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42187692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com