Que chamada de sistema Evince usa para abrir o pdf?

2

Eu tentei ligar as chamadas do sistema usando o módulo do kernel do Linux. No entanto, quando eu abro um arquivo pdf usando o Evince, não encontro nenhum open , read e write é usado neste arquivo específico, somente lstat é usado.

Aqui é o log strace de strace evince folder1/test.pdf

Então, pergunto-me que chamada de sistema evidencia para open e read do arquivo?

    
por user6456568 23.11.2018 / 02:00

1 resposta

0

Como apontado por @ThomasDickey, você precisa passar a opção strace the -f , para incluir o rastreamento de todos os threads.

(Os clone() syscalls estão criando novos segmentos, não processos, mas você ainda precisa do -f para ter strace seguir tópicos .)

Depois de seguir todos os threads, o open se torna aparente, abrindo o arquivo no modo somente leitura, no descritor de arquivo 19:

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

O conteúdo do arquivo é lido usando uma sucessão de pread chamadas em um pequeno buffer de 256 caracteres, o primeiro dos quais recebe o %PDF-1.3 header:

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

Se você passar pelo rastreio, verá que lseek será o final do arquivo (para determinar o tamanho do arquivo) e, em seguida, ler alguns blocos de dados a partir dele. Presumo que seja informação sobre as páginas no documento.

Os seguintes pread s acontecem nos deslocamentos no meio do arquivo, mas todos eles parecem começar com algumas informações sobre "página", então presumo que seja importante descobrir as páginas no documento PDF, provavelmente usando os deslocamentos do final do arquivo.

    
por 23.11.2018 / 04:12