代码之家  ›  专栏  ›  技术社区  ›  Tomas Lapsansky

当我用bash运行程序时,C fopen不工作

  •  0
  • Tomas Lapsansky  · 技术社区  · 8 年前

    我有简单的bash脚本

    #!/bin/bash
    
    make
    ./code1_test/test_syn1
    ./code2_test/test_syn2
    ./code3_test/test_syn3
    

    test\u syn是我的程序测试。在所有这些程序中,我都使用fopen命令打开。txt文件。如果我从命令行运行程序,我有一个正确的测试输出,但是当我使用这个bash脚本时,fopen会返回NULL,所以我无法打开我的脚本。txt文件,我无法运行测试。为什么会发生这种情况,我该如何解决?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Charles Duffy    8 年前

    如果您正在使用 fopen() 对于相对路径,您应该从其目录执行脚本。试试这个:

    #!/bin/bash
    make
    (cd code1_test/ && exec ./test_syn1)
    (cd code2_test/ && exec ./test_syn2)
    (cd code3_test/ && exec ./test_syn3)
    

    否则,您的程序将尝试打开 .txt 在运行Bash脚本的目录中,这不是您想要的。

    如果你想在任何地方运行你的程序,你可以尝试不使用相对路径 fopen() .

    推荐文章