[#49193] [ANN] Ruby 2.0.0-p0 released — Yusuke Endoh <mame@...>

こんにちは。Ruby 2.0.0-p0 をリリースします。

14 messages 2013/02/24
[#49196] [ANN]Ruby-2.0.0-p0 mswin32版 MSI was Re: [ANN] Ruby 2.0.0-p0 released — arton <artonx@...> 2013/02/24

artonです。

[#49216] Windows用 インストーラ無しパッケージの需要について (Re: [ANN]Ruby-2.0.0-p0 mswin32版 MSI was Re: [ANN] Ruby 2.0.0-p0 released) — Takeshi Iogawa <alpha@246.ne.jp> 2013/02/27

いおがわと申します。 Ruby2.0の正式リリースおめでとうございます。

[ruby-list:49230] Re: PDF ファイルが Adobe Reader などで開かれているかを検知したい

From: Masaya TARUI <tarui@...>
Date: 2013-02-28 07:27:33 UTC
List: ruby-list #49230
たるいです。

どうもflockからは見れない所でロックがかけれてるようで、pdfを開いてても排他ロックとれちゃいますね。
vista 以降ならちゃんと情報がとれる方法もある(http://nyaruru.hatenablog.com/entry/20070426/p1)ようですが、

簡単に調べるだけなら、
movable = open("a.pdf","ab"){true} rescue false
という方法で逃げれると思います。


2013年2月28日 14:17 Takeshi Iogawa <alpha@246.ne.jp>:
> いおがわです。
>
> 解決策でなくて申し訳ないのですが。
> これ、Ruby の問題でななくファイルの排他制御(ファイルロック・アンロック)
> の問題ですよね?
>
> 例えばAdobe Reader で開いているファイルは、エクスプローラから
> でも、cmd.exe上のmoveコマンドからでも移動に失敗すると思います。
>
> UNIX系なら、flock() システムコールでしょうけど、Windowsの場合、
> WIN32API のなかにファイルのロック・アンロックのAPIが用意されて
> いるようです(ざざっとぐぐったダケなので詳細はすみません)
>
> それから、仮にRuby にファイルのロック状態を確認するメソッドが
> あったとしても
>
> (1) PDF ファイルのロック状態を確認
> (2) アンロック状態(mv OK)
> (3)     <-------- 誰か別のひと(or 別のアプリ)が当該PDFをロック
> (4) mv → やっぱり失敗
>
> というケースが発生しえます。
>
> ということでロジックを見直したほうがよろしいかと。。。
> # 具体的な方法が示せなくてごめんなさい
>
>
>
>
>
>
>
> (2013/02/28 12:42), 5.5 wrote:
>> 5.5 です。お世話になっております。
>>
>> PDF ファイルを Adobe Reader で開いている場合,FileUtils.mv
>> などで移動することができません。
>> ※Permission Denied と実行時エラーが出る。
>>
>> そこで,事前にそういう状態であるかどうかを検知したいのです
>> が,できますか?
>>
>> FileTest.writable? の類いは,パーミションを見ているようで,
>> 上記の状態でも true が返ります。
>>
>>
>> 実際に mv してみて,例外が出たらその場合の処理を行う,とい
>> う方法も考えられます。
>> しかし,同時に他のファイル操作も行いたいのです。
>> 複数のファイル操作の一つでも失敗したら全部を元に戻す,とい
>> うロジックもあり得るでしょうが,避けたいところです。
>>
>> 移動が可能かどうかを,移動を実行せずに知る手段はあるでしょ
>> うか?
>>
>> OS は Windows です。
>>
>
>
> --
> --
>  Takeshi Iogawa
>



-- 
樽家昌也(Masaya TARUI)
No Tool,No Life.

In This Thread