strace para resolução de problemas de comunicação entre processos

1

Eu tenho saída capturada pelo seguinte comando:

strace -f -e trace=process,socketpair,open,close,dup,dup2,read,write -o rsync.log rsync -avcz --progress src/ dst/

é um pouco longo, então eu carreguei aqui . Eu entendo o formato básico de strace output, por exemplo, a seguinte linha:

1399 open("/lib/x86_64-linux-gnu/libpopt.so.0", O_RDONLY|O_CLOEXEC) = 3

Significa que:

  1. 1399 é o PID do processo
  2. open(const char *pathname, int flags); é chamada de sistema com argumentos particulares (tirados de man 2 open )
  3. 3 é o valor de retorno, um descritor de arquivo neste caso específico (retirado de man 2 open )

De acordo com este tópico:

rsync spawns two processes/threads to do the copy, and there's one stream data between the processes, and another from the receiving process to the target file.

Using something like strace -e trace=process,socketpair,open,read,write would show some threads spawned off, the socket pair being created between them, and different threads opening the input and output files.

Posso, de alguma forma, analisar strace output para poder confirmar declarações do segmento mencionado e ver o que acontece sob o capô, mesmo que eu não esteja muito familiarizado com a comunicação entre processos? Estou especialmente interessado em passar dados entre processos / threads (quantos dados foram passados de process1 para process2? Onde o process2 escreveu os dados recebidos?)

Eu também vi linhas como essa no log, mas não sei como interpretá-las corretamente:

1399  <... close resumed> )             = 0
1400  <... dup2 resumed> )              = 0
    
por Wakan Tanka 22.06.2016 / 15:57

0 respostas