stdout, stdin e stderr no AIX 7.1

3

Eu tenho portado vários scripts no AIX 7.1 . Eu não tenho experiência anterior com este sistema Unix.

Os scripts foram executados em /bin/sh e dependiam de /dev/stdout , /dev/stdin e /dev/stderr . Esses arquivos são não padronizados e o AIX 7.1 não parece implementá-los.

Quando descobri que o /proc VFS está presente, tentei substituir o /dev/std{in|out|err} por /proc/$$/fd/{0|1|2} . Isso falhou, pois os descritores não são links para um pts , mas um dispositivo de arquivo char real com permissões 000 ( c--------- ).

Sabe-se que o /bin/bash emula muitos dispositivos em /dev , incluindo /dev/std* . Minhas experiências limitadas com a mudança para /bin/bash de /bin/sh e usando /dev/std* foram bem-sucedidas. No entanto, comutação & testar todos os scripts para /bin/bash seria demorado.

Pergunta:

Como lidar com os arquivos IO padrão no AIX 7.1 em /bin/sh ? Está empregando por exemplo. /dev/tty do caminho?

// Exemplo de uma chamada em um dos scripts a serem portados:

# param_protocol parameter apparently needs a file representation of the stdout
black_box_binary param1=$value1 param2=$value2 param_protocol=/dev/stdout
    
por Yuri 18.01.2018 / 10:08

2 respostas

2

Você pode substituir esses arquivos lendo <&0 e escrevendo para >&1 e >&2 , ou seja. stdin, stdout e stderr, respectivamente.

    
por 18.01.2018 / 13:05
0

Os arquivos /dev/std{in,out,err} poderiam ser apenas links simbólicos para /proc/$$/fd/{0,1,2} ? Consulte " Erro padrão e outro redirecionamento de saída " para informações contextuais . No entanto, de acordo com um segmento anterior, a portabilidade de > / dev / stdout ” parece ser dependente do shell.

    
por 18.01.2018 / 11:17