我正在编写一个名为code.f的Fortran代码。我希望这段代码运行另一个可执行文件,我可以将其存储在与代码相同的目录中(或者在编译时存储为code.f)。
使用以下方法进行编码是否可接受:
CALL system(./executable < input.inp > output.out)
或者这显然是不好的做法?
************替代************
我有可执行文件的代码exec.f.如果使用code.f编译并使用code.f make文件进行链接,您是否可以建议如何执行此操作,当前的make文件如下所示:
FFLAGS = $(MYFLGS) -I$(INCDIR) -static
OBJ = file1.o file2.o file3.o file4.o
...
...
Code: code.f code.o $(OBJ) par.h
$(FC) $(FFLAGS) -o $@ code.o $(OBJ) $(LIBS)
更新
是否正确 OBJ = file1.o file2.o file3.o file4.o exec.f
在输入之后,如何在code.f中调用exec.f中的代码?
如果我需要让我的问题更清楚,请告诉我。非常感谢你的帮助
詹姆斯
答案 0 :(得分:1)
SYSTEM功能根本不存在,如果总是使用它是一种不好的做法。
关于第二个问题:您不能只将两个可执行文件连接到一个可执行文件,因为它只能包含一个入口点(主程序或PROGRAM
)。
总结选项:
PROGRAM
中的exec.f
更改为SUBROUTINE
并从exec.f
创建一个库。链接在一起并从Code
PROGRAM
中的exec.f
更改为SUBROUTINE
,并将exec.f
添加到Code
目标。从exec.f
Code
函数
SYSTEM
Code
来电
醇>
所有选项均有效且具有不同的用例。
答案 1 :(得分:1)
可接受是一个意见问题。我会尽量避免这种方法,但它可能是解决某些问题的最佳方案。
Fortran 2008提供了内在程序execute_command_line
,它比“系统”更加标准。