답변:
짧은 대답은 당신이 이것을 할 수 없다는 것입니다. 디렉토리가 bash가 FIFO 경로를 두는 것을 기본값으로하기 때문에, 그 디렉토리의 특정 FIFO가 bash에 의해 작성되었거나 bash에 의해 명령에 인수로 전달되었음을 의미하지는 않습니다.
문제의 더 큰 그림을보십시오. 정말로 당신은 무엇을 해결하려고합니까?
만약 당신이 해결하려고하면, "내 프로그램의 출력은 항상 다른 프로그램으로 파이프되어야한다"그리고 나서 사용자가 bash의 애매한 프로세스 치환을 사용하지 않아도된다. 시스템의 기본 쉘이 zsh 일 경우 어떻게해야합니까? 본 껍질? 콘 쉘?
대신 프로그램이 파이프, 포크 및 exec 프로그램을 다른 프로그램에 작성하게하십시오.
그래서, 당신은 정말로 무엇을하려고합니까? 하나님이 금지하시는 경우, bash에 의해 생성 된 FIFO 대신 프로그램의 사용자가 전달한 파일에 출력 결과를 기록하면 어떻게됩니까?
사용 -p
~에 대한 옵션 test
파일이 파이프 인 경우 :
#!/bin/bash
file="$1"
if [ -p "$file" ]
then
echo "$file is a pipe"
fi
데모:
$ myscript.sh <(echo hello)
/dev/fd/63 is a pipe
myProg -fifopaths >(/run/some/application)
내 프로그램이 본부에 대한 논쟁으로 통과 한 것으로 봅니다. /path/to/myProg -fifopaths /dev/fd/63
내 프로그램에 전달 된 경로가 실제로 유효한지 확인해야합니다. /dev/fd
FIFO에 대한 경로인지 확인하십시오. 문제는 내 프로그램이 실행될 때 발생합니다. 시스템 -X FIFO 경로가없는 곳 /dev/fd
,이 FIFO 경로가 어디에 있어야하는지 알고 싶습니다. 시스템 -X 인수를 검증하기 위해서.