Um processo herda os diretórios de trabalho lógicos e físicos?

2

Eu sei que quando um processo é iniciado, ele herda o diretório de trabalho de seu processo pai. Mas ele herda os diretórios de trabalho lógicos e físicos ou apenas o diretório de trabalho físico?

    
por user7681202 27.04.2017 / 01:28

2 respostas

1

Hmm, mais ou menos. O diretório de trabalho "lógico" é transportado na variável de ambiente PWD . environ(7) diz que é "definido por alguns shells", portanto, obviamente dependente de aplicativos. Outra questão é se o outro programa lê-lo:

/tmp$ ln -s ~ link  
/tmp$ cd link  
/tmp/link$ bash -c "pwd"
/tmp/link
/tmp/link$ zsh -c "pwd" 
/home/itvirta
/tmp/link$ dash -c "pwd"
/tmp/link

Bash e dash parecem contar, zsh não (no meu sistema, tenho certeza que é configurável).

    
por 27.04.2017 / 14:28
0

A chamada do sistema getcwd retorna nomes de caminhos físicos, como POSIX determina que

The pathname shall contain no components that are dot or dot-dot, or are symbolic links.

O Linux parece usar um mecanismo de nível mais baixo que os nomes para passar o CWD, já que você pode renomear um diretório enquanto outro programa o usa como CWD.

    
por 27.04.2017 / 14:58

Tags