Fortran Coder

查看: 9120|回复: 1
打印 上一主题 下一主题

[文件读写] 询问一个关于fortran调用批处理文件的问题

[复制链接]

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
楼主
发表于 2019-2-24 22:34:24 | 显示全部楼层
本帖最后由 vvt 于 2019-2-24 22:37 编辑

楼主的问题描述得非常好、详细、清晰,这一点赞美一下。
所涉及的问题是:
1. 虽然你的程序用到了多线程,但独立运行的 call system() 是单独的“进程”,而非线程。
2. 多进程的并行,由操作系统负责,对于您的程序,OpenMP并行并不能起到加速的作用。(因为call system只是唤醒命令,而唤醒是非常快的。)
(你可以想象,写一篇文章很消耗时间,但“命令别人写一篇文章”,则很容易。你在并行的命令别人写文章,没多大意义。)
(program.exe并不是由并行代码构成的,所以起不到并行的作用)
3. run.cmd 这个东西完全没必要。你可以直接
call system("program abc.iter m > m.log")
4. 你可以分别切换到不同的目录下,执行 call system,这样,输入输出文件就是当前的文件夹了。
5. 实际上,你根本不需要写fortran代码,直接用windows的 bat 批处理更简单。
6. 如果你确实要用 Fortran来做,那么可能类似这样的程序

首先,把 program.exe 放在 D:\test_al 文件夹。(不需要每个文件夹放一个)
[Fortran] 纯文本查看 复制代码
use IFPORT
character(len=3) :: cDir
Do i = 1 , 8
  write( cDir , '(i3)' ) i
  k = ChangeDirQQ("D:\test_al\inv"\\adjustl(cDir))
  call system("start D:\test_al\program.exe abc.iter m > m.log")
End Do

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-7 21:04

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表