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