使用call to system复制文件()

时间:2015-09-16 10:51:20

标签: fortran intel-fortran

我有一个调用英特尔可移植性功能'系统'的功能:

subroutine system_subr(JobString,ExitStatus)
    implicit none

    character(len=*),intent(in) :: JobString
    integer,intent(out) :: ExitStatus

    integer shiftr,system

    ExitStatus=system(JobString)
end subroutine system_subr

我的程序正在执行以下操作:

call system_subr('mv myfile newfilename', status)
call system_subr(submitjobstring, status)

第二次调用中的copy命令是通过ssh完成的 - 一个示例submitjobstring(父作业在/ sharedscratch / user / test中运行)将是:

ssh node1 " mkdir -p /scratch/user/9570.0.70468 ; cd /sharedscratch/user/test/ ; cp -r newfilename otherfile /scratch/user/9570.0.70468 ; 

这段代码多年来一直没有问题。但是,在我们的新计算群集中,这大部分时间都在工作,但偶尔会遇到问题。

我有时得到的错误是:

cp: cannot stat ‘newfilename’: No such file or directory

如果我查看/scratch/user/9570.0.70468/,其他文件(在程序启动之前创建)已经复制到那里,但是newfilename没有。我还发现newfilename确实存在于/ sharedscratch / user / test中。如果我在第一次调用system_subr时检查退出状态,则它始终为0.

如果我在两次调用system_subr之间放入一个sleep命令,它似乎总能正常工作。在继续之前,系统是否正在等待mv命令完成?我真的很想知道为什么会这样。

0 个答案:

没有答案
相关问题