onde é a localização do stdin, stdout, stderr file descriptor no AIX (unix)

2

No meu ambiente Linux, os descritores de arquivos estão localizados em / dev / fd.

Onde está a localização do stdin, stdout, stderr file descriptor no AIX (unix).

Não consegui encontrá-los.

    
por asleea 20.07.2016 / 04:17

2 respostas

4

A questão é baseada em um equívoco sobre a generalidade dos sistemas de arquivos proc. Os sistemas que implementam isso (como Solaris e Linux) possuem dispositivos especiais que podem ser usados para criação de scripts, incluindo /dev/fd seguido por um descritor de arquivo (número).

Com o Solaris, /dev/fd é uma pasta virtual em /dev , enquanto o Linux usa um link simbólico para /proc em uma pasta (virtual) correspondente ao seu ID do processo. Não há padrões para os sistemas de arquivos proc, e os detalhes serão diferentes.

Verificando os sistemas AIX 5.3 e 7.1, eles implementam um sistema de arquivos proc, mas não possuem /dev/fd . No entanto, eles fazem tem um sistema de arquivos virtual /proc , sob o qual você pode encontrar seu ID de processo atual e que é uma pasta fd com descritores de arquivo.

Convencionalmente, os descritores de arquivo são inicializados 0, 1, 2 para stdin , stdout , stderr respectivamente.

Leitura adicional:

  • /proc - Contém informações de estado sobre processos e encadeamentos no sistema (AIX 7) para fd :

    Contains files for all open file descriptors of the process. Each entry is a decimal number corresponding to an open file descriptor in the process. If an entity refers to a regular file, it can be opened with normal file semantics. To ensure that the controlling process cannot gain greater access, there are no file access modes other than its own read/write open modes in the controlled process. Directories will be displayed as links. An attempt to open any other type of entry will fail (hence it will display 0 permission when listed).

  • Conhecendo o sistema de arquivos do Solaris, Parte 1

  • Hierarquia do sistema de arquivos do Linux: /proc

por 20.07.2016 / 11:15
4

Esses são descritores de arquivos artificiais e certamente não são necessários para processamento, o que explica que eles não estavam lá historicamente e ainda ausentes em alguns sistemas.

O shell lida com esses descritores de arquivo padrão baseados em seu TTY. Quando o shell é iniciado, ele chama isatty() e, se for (um TTY), abre os descritores de arquivo padrão automaticamente.

    
por 20.07.2016 / 06:24