Fortran 中系统范围的唯一文件名

System-wide unique filename in fortran

我有一个 Fortran 程序需要找到不区分大小写匹配的文件名 'my_file'

为此,我使用以下命令:

call system "find -ipath '*my_file' > " // trim(tmp_name)

之后我阅读了tmp_name

的内容

当 运行 连接程序的多个实例时,它们会失败,因为所有实例都写入同一个文件。

我使用以下解决方案都没有成功:

有什么想法吗?

当然可以在文件名中包含PID(进程ID)。 Intel Fortran 和其他一些编译器在其他编译器中有 GETPID() function from the IFPORT module (can be also a non-standard intrinsic),但您也可以改用 GET_ENVIRONMENT_VARIABLE() 并查询 PID 环境变量值(可以附加到的字符串你的文件名)。

PID 在任何给定时间都应该是唯一的,但在原始进程终止后将来会重复。 (PID reuse possibility in Linux)

您还可以包括日期和时间。


这是一个快速但肮脏的实用解决方案,可以快速完成在某些多用户(或已经受到威胁的)系统中可能不安全的工作。欢迎使用其他方法的其他答案。