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

时间:2017-11-22 00:16:32

标签: c bash shell fopen

我有简单的bash脚本

#!/bin/bash

make
./code1_test/test_syn1
./code2_test/test_syn2
./code3_test/test_syn3

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

1 个答案:

答案 0 :(得分:2)

如果您将fopen()与相对路径一起使用,则应从其目录中执行脚本。试试这个:

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

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

如果您希望能够从任何地方运行程序,可能会在fopen()时尝试不使用相对路径。