3

iPad を手に入れたばかりで、愚かにも TexTouch アプリケーションを手に入れました。愚かなことに、Apple の規制により、TexTouch は Tex をコンパイルできず、Dropbox を使用して .tex ファイルをコンピューターに同期します。離れたコンピュータでは、.tex ファイルを PDF にコンパイルして送り返す別のプログラムに捕捉されます。しかし (驚き!) その遠いプログラムは Windows と Mac のみです。そして、私はLinuxを使用しています。だから私は、inotifyを使わないのはなぜだと思いましたか?もう少し簡単にするために、実際に pyinotify を使用したので、大量のコンパイルを処理する必要はありません。しかし、Dropbox がファイルをドロップすると、pyinotify の方言で、発生するイベントを以下に示します。(明らかに、「最初の doc.tex」は同期しているファイルの名前です。)

event: <Event dir=False mask=0x20 maskname=IN_OPEN name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x1 maskname=IN_ACCESS name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x10 maskname=IN_CLOSE_NOWRITE name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event cookie=151401 dir=False mask=0x40 maskname=IN_MOVED_FROM name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event cookie=151402 dir=False mask=0x80 maskname=IN_MOVED_TO name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x4 maskname=IN_ATTRIB name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x20 maskname=IN_OPEN name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x1 maskname=IN_ACCESS name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x10 maskname=IN_CLOSE_NOWRITE name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x20 maskname=IN_OPEN name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x1 maskname=IN_ACCESS name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x10 maskname=IN_CLOSE_NOWRITE name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x20 maskname=IN_OPEN name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x1 maskname=IN_ACCESS name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x10 maskname=IN_CLOSE_NOWRITE name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x20 maskname=IN_OPEN name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x1 maskname=IN_ACCESS name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >
event: <Event dir=False mask=0x10 maskname=IN_CLOSE_NOWRITE name=first doc.tex path=/home/eje211/Dropbox/TexTouch pathname=/home/eje211/Dropbox/TexTouch/first doc.tex wd=1 >

私はそれから何を作ることができますか?一意に見える唯一のイベントは、IN_MOVE_FROM および IN_MOVE_TO イベントです。しかし、それらを監視するのは悪い考えのようです。Dropbox によって開始されたイベントを検出する方法はありますか? inotify または pyinotify 以外のものを使用する必要がありますか?

4

2 に答える 2

2

まあ、IN_OPEN(ファイルが読み取り用に開かれている)、IN_ACCESS(ファイルがアクセスされている)、およびIN_ATTRIB(ファイル属性が変更されている) は、明らかに必要なものではありません。IN_CLOSE_NOWRITEは、ファイルが読み取りのために閉じられている (つまり、変更が行われていない) ことを意味するため、これも必要ではありません。したがって、またはのいずれかである必要がありIN_MOVED_FROMますIN_MOVED_TO。他のイベントがまったく発生していないと確信していますか?その場合、ファイルはおそらく別の場所で作成され、最終的な場所である に移動されてい~/Dropboxます。

于 2011-08-08T21:30:34.227 に答える