You can use 'lsof' to do it and probably that's the same scheme which is used by Puppy.
But you have to know that it is still not 100% safe. Because a file system allows concurrent access, at one moment your check says the file is not opened, but as soon as you start the copying and deleting the copy on the ramdisk, another process starts opening it for modification or deletion. You can imagine it will result in various confusion to your file system.
HGST Ultrastar HE10 HUH721010ALE600 10TB SATA 6Gb/s 7200RPM 3.5" Enterprise HDD
$74.99
Western Digital WD60PURZ 6TB Hard Drive SATA6 Gb/s 64MB Cache 3.5 Inch
$109.99
WF12F DELL 1TB 7.2K 6GBPS SATA 2.5'' HDD HARD DRIVE ST91000640NS 0WF12F
$25.00
Seagate Exos X16 ST14000NM001G 14TB 512E SATA 6Gb/s 3.5" Enterprise Hard Drive
$157.99
Seagate Exos 7E10 ST2000NM000B 2TB 7200RPM SATA 6.0Gb/s 3.5" Internal Hard Drive
$29.99
HGST Ultrastar DC HC520 12TB SATA 6Gb 256MB 3.5" Enterprise HDD- HUH721212ALE601
$82.99
2 PACK Seagate ST1000LM035 Mobile HDD 1TB 2.5" SATA III Laptop Hard Drive
$27.49
8TB Seagate Archive SATA 3.5" HDD Hard Drive 100% Healthy 200MB/s ST8000AS0002
$36.53
WD HDD Ultrastar DC HC520 HUH721212AL4205 12TB 3.5" SAS Server Hard Disk Drive
$45.30
WD 16TB Elements Desktop, Certified Refurbished Hard Drive - RWDBWLG0160HBK-NESN
$174.99