Chamadas implícitas do sistema nos comandos do UNIX

1

Eu tenho estudado UNIX e chamadas de sistema e me deparei com perguntas de baixo nível e complicadas. A pergunta pergunta quais chamadas de sistema são chamadas para este comando:

grep word1 word2 > file.txt

Eu fiz alguma pesquisa e não consegui encontrar um grande número de recursos nas chamadas subjacentes do UNIX.

No entanto, parece-me que a resposta seria open (para abrir e o descritor de arquivo para o arquivo file.txt ), então dup2 (para alterar o STDOUT de grep para o arquivo descritor de open ), então write para gravar o STDOUT de grep (que agora é o descritor de arquivo de file.txt ) e finalmente close() , para fechar o descritor de arquivo de file.txt . ..

No entanto, não tenho idéia se estou certo ou no caminho correto, alguém com experiência em UNIX pode me esclarecer sobre esse assunto?

    
por q.Then 13.04.2016 / 03:23

1 resposta

3

No Linux, você tem strace :

strace -f sh -c 'grep word1 file > file.txt'

Aqui, usamos -f para informar strace para rastrear o processo filho.

Em * BSD, você tem dtruss (que usa dtrace subjacente):

dtruss -f sh -c 'grep word1 file > file.txt'

O OSX tem trace . Os sistemas históricos do Unix têm treliça ( Solaris , AIX , etc.).

    
por 13.04.2016 / 03:32