我在SAG Natural有一份工作,可以创建工作文件。他们被创建后,我想要追加,如果有多个,然后ftp他们。append/ftp将独立于创建它们的作业运行。这带来了在当前创建文件时尝试使用ftp/append文件的问题。
在我继续我的逻辑之前,OpenVMS或FTP中有没有语法可以检查文件是否打开/锁定?
发布于 2016-04-07 11:33:06
我不会尝试打开来写...因为它可能会起作用,锁定其他人,并更改修订日期/计数。相反,只需尝试$OPEN/READ/SHARE=READ FILE ...
如果它打开了,您实际上可以使用文件句柄来读取数据,从而防止其他进程在测试和使用之间打开它。但它将使用DCL IO,它使用较小的缓冲区。下面的例子主要是为了好玩: APPEND FILE ...这个例子硬编码了一个输出,主要是因为我很懒。您最好先在成功时关闭文件,然后使用APPEND/LOG。
享受吧,海因
$ output = "tmp.tmp"
$ if p1.eqs."" then exit 16
$ create tmp.tmp
$ old = ""
$loop:
$ file_name = f$search(p1)
$ if file_name .eqs. "" .or. file_name .eqs.old then exit
$ old = file_name ! Handle non-wildcarded input
$ close/nolog file
$ open/read/share=read/erro=locked_or_other_error file 'file_name'
$ append file tmp.tmp ! /log
$ write sys$error "Appended ", file_name
$ close/nolog file
$ goto loop
$locked_or_other_error:
$ write sys$error "Found, but could not open file ", file_name
$ goto loop发布于 2016-04-07 07:43:20
SHOW DEVICE /FILE有帮助吗?如果您的文件是打开的,它应该会显示在该命令的输出中。
https://stackoverflow.com/questions/36451525
复制相似问题