我想像 MS Office 应用程序从 Ruby 程序中那样锁定文件,这样就不允许删除,因为“文件是在另一个程序上打开的”。
Ruby 标准库似乎无法做到这一点——我刚刚尝试过flock()
——所以我试图调用LockFileEx函数。
fd = File.open("locked.file", File::RDWR|File::CREAT, 0644)
fd.write "this file to be locked"
import_array = %w(p i i i i i)
wapi = Win32API.new('kernel32', 'LockFileEx', import_array, "i")
wapi.call(fd, 1, 0, 0, 0, 0)
wapi.call 失败并出现 TypeError 异常“无法将文件转换为字符串”。
我应该使用什么作为 import_array 中的第一项来表示文件句柄?
如何将文件描述符打包成 String ?我从哪里获得文件描述符结构?
我正在使用 Ruby 1.9.3。