计算化学公社

标题: fortran怎么获得可执行文件的路径? [打印本页]

作者
Author:
wxhwbh    时间: 2020-5-3 21:56
标题: fortran怎么获得可执行文件的路径?
因为程序里使用getarg函数,使得在不同的目录下都可以读取输入文件运行。但程序中需要用到程序可执行文件的路径(因为可执行文件路径下有一个文件夹,需要读取这个文件夹里的文件)。搜了一下发现好像居然没有好的方法可以直接得到可执行文件的路径,只找到一个GetModuleFilename函数,而且好像不是fortran自带的,只能在Windows下用。所以想问问Linux下怎么获得可执行文件的路径呢?

作者
Author:
Warm_Cloud    时间: 2020-5-4 08:52
比如:
call system("which amesp > .amesppwd")
open(205,file=".amesppwd")
read(205,"(A)") Pwd
作者
Author:
niobium    时间: 2020-5-4 09:19
Warm_Cloud 发表于 2020-5-4 08:52
比如:
call system("which amesp > .amesppwd")
open(205,file=".amesppwd")

大师大法好
作者
Author:
wxhwbh    时间: 2020-5-4 11:36
Warm_Cloud 发表于 2020-5-4 08:52
比如:
call system("which amesp > .amesppwd")
open(205,file=".amesppwd")

谢谢你。但我发现一个问题。就是直接在命令行里用which能找到,但在程序里用system函数就会报错:
which: no wqc in (/root/wbh/soft/amber18/bin:/opt/intel/intelpython3/bin:/opt/intel/advisor_2019.1.0.579143/bin64:/opt/intel/vtune_amplifier_2019.1.0.579888/bin64:/opt/intel/inspector_。。。。。。。后面太长了删掉了,基本上就是.bashrc的信息)
这个是怎么一回事呢?
话说Fortran真的没有一个函数能直接报出可执行路径吗?比如getcwd这种可以报出当前工作目录的。
作者
Author:
wxhwbh    时间: 2020-5-4 16:22
找到解决方法了。同样使用getarg就行:

call getarg(0,workpath)

返回的workpath就是可执行文件的目录




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3