EvinceはPDFを開くときにどのシステムコールを使用しますか?

EvinceはPDFを開くときにどのシステムコールを使用しますか?

システムコールを接続するためにLinuxカーネルモジュールを使用しようとしています。しかし、Evinceを使用してPDFファイルを開く必要はopenありませんが、この特定のファイルreadには。writelstat

ここはいstraceログstrace evince folder1/test.pdf

そのため、evinceがファイルに使用するシステムopenコールが何であるかを知りたいと思いますread

ベストアンサー1

@ThomasDickeyが指摘したように、すべてのスレッドのトレースを含めるには、straceこのオプションを渡す必要があります。-f

clone()システムコールはプロセスではなく新しいスレッドを作成しますが、まだ-f必要です。strace懸念されるトピックがあります.)

すべてのスレッドを追跡したら、親スレッドにopenなり、ファイル記述子19で読み取り専用モードでファイルを開きます。

open("/home/xytao/folder1/test.pdf", O_RDONLY) = 19

ファイルの内容は小さな256文字のバッファへの一連の呼び出しを実行して読み込みpread、そのうちの最初は%PDF-1.3ヘッダを取得します。

pread(19, "%PDF-1.3\r\n%\241\263\305\327\r\n3 0 obj\r\n<</Fil"..., 256, 0) = 256

トレースを見るとlseek(ファイルサイズを決定するために)ファイルの終わりに達し、そこから複数のデータブロックを読み取ることがわかります。ドキュメントのページに関する情報だと思います。

以下は、preadファイルの中央のオフセットで発生しますが、すべて「ページ」に関するいくつかの情報から始まるように見えるので、これはPDF文書のページ数を数える証拠だと思います。ファイル。

おすすめ記事