2011-07-05 22 views
3

特定のファイルが開いているかどうかを確認するためにluaファイルをスクリプト化しようとしています。それが開いている場合は、そのファイルを閉じるようにします。私はファイルが存在するかどうかを確認する方法を知っていますが、ファイルが開いているかどうかを確認する方法を知る必要があります。ファイルが開いているかどうかを確認するLua

+2

「ファイルはrです"unning"。 – lhf

+0

どのプラットフォームですか? – daurnimator

答えて

5

Luaは、C、C++、他のほとんどすべての言語のように、開かれたファイルを閉じることしかできません。自体はです。他の人が開いているファイルを閉じることはできません(標準のLua呼び出しではありません)。これはと信じられないほどが失礼です。

他の人がファイルを開いているかどうかを確認するテストはできません。また、ファイルを閉じることもできません。これを行うためのシステムAPI呼び出しがあるかもしれませんが、LuaスクリプトにそれらのAPIへのアクセス権を与える必要があります。 Luaの標準ライブラリはこれを行うことができません。

1

あるファイルが開いているプログラムがあるかどうかを確認したいような音がします。 まず、linuxのlsofの出力を解析しています。ハック方法の

fd = io.popen("lsof path/to/my/file") 
fileopened = (#fd:read("a*") > 0) 
+1

もしあなたがLinux上で、あなたが誰も(あるいはあなたのBSOFと気にしない)傷つけないこと、あるいはファイルが開いている自分自身のプロセスだと確信しているなら、あなたは 'fuser ' – jpjacobs

0

種類は、それを行うには、それが動作します:

processname = "process_name_here.exe" 

filedata = io.popen("tasklist /NH /FO CSV /FI \"IMAGENAME eq "..processname.."\"") 
output = filedata:read() 
filedata:close() 

if output ~= "INFO: No tasks are running which match the specified criteria." then 
    -- Program is running. Close the program 
    os.execute("taskkill -im "..processname) 
else 
    -- Program is not running 
end 

ただ、タスクマネージャに表示プロセス名を指定して「process_name_here.exe」を交換することを確認してください

また、実際に実行されているかどうかを確認することなく、これを使用して閉じることもできます。

関連する問題