计算化学公社

 找回密码 Forget password
 注册 Register
Views: 5210|回复 Reply: 4
打印 Print 上一主题 Last thread 下一主题 Next thread

[Fortran] fortran怎么获得可执行文件的路径?

[复制链接 Copy URL]

257

帖子

4

威望

4967

eV
积分
5304

Level 6 (一方通行)

因为程序里使用getarg函数,使得在不同的目录下都可以读取输入文件运行。但程序中需要用到程序可执行文件的路径(因为可执行文件路径下有一个文件夹,需要读取这个文件夹里的文件)。搜了一下发现好像居然没有好的方法可以直接得到可执行文件的路径,只找到一个GetModuleFilename函数,而且好像不是fortran自带的,只能在Windows下用。所以想问问Linux下怎么获得可执行文件的路径呢?
贫困U 退学与疯子工程学院

286

帖子

3

威望

5609

eV
积分
5955

Level 6 (一方通行)

2#
发表于 Post on 2020-5-4 08:52:35 | 只看该作者 Only view this author
比如:
call system("which amesp > .amesppwd")
open(205,file=".amesppwd")
read(205,"(A)") Pwd

评分 Rate

参与人数
Participants 1
eV +3 收起 理由
Reason
wxhwbh + 3 谢谢

查看全部评分 View all ratings

516

帖子

1

威望

5052

eV
积分
5588

Level 6 (一方通行)

3#
发表于 Post on 2020-5-4 09:19:55 | 只看该作者 Only view this author
Warm_Cloud 发表于 2020-5-4 08:52
比如:
call system("which amesp > .amesppwd")
open(205,file=".amesppwd")

大师大法好

257

帖子

4

威望

4967

eV
积分
5304

Level 6 (一方通行)

4#
 楼主 Author| 发表于 Post on 2020-5-4 11:36:27 | 只看该作者 Only view this author
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这种可以报出当前工作目录的。
贫困U 退学与疯子工程学院

257

帖子

4

威望

4967

eV
积分
5304

Level 6 (一方通行)

5#
 楼主 Author| 发表于 Post on 2020-5-4 16:22:24 | 只看该作者 Only view this author
找到解决方法了。同样使用getarg就行:

call getarg(0,workpath)

返回的workpath就是可执行文件的目录
贫困U 退学与疯子工程学院

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-24 05:55 , Processed in 0.178560 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list