답변1
한계.
이러한 제한은 운영 체제에 따라 다르며 ulimit
다음과 같은 영향을 받을 수 있습니다.
파일 설명자를 사용하여 프로그래밍합니다.
소규모 프로젝트
규칙을 사용하십시오. 관점에 따라 stdin, stdout 및 stderr이 각각 0, 1 및 2인 이유입니다. 프로그램 모음이 파일 설명자 9를 사용하여 일종의 게시/구독자에게 이벤트를 보내기로 결정한 경우 프로그램이 이 규칙을 따르는지 확인해야 합니다. 이것은 실제로 잘 작동합니다.
환경이나 매개변수를 통해 정보를 전달합니다.
GNU make에는 --jobserver-auth=R,W
사용할 파일 설명자를 알려주는 옵션(R과 W는 숫자)이 있습니다.작동 중인 서버(이제 열린 파일 설명자를 전달하는 대신 명명된 파이프를 직접 열 수 있도록 하는 것이 더 좋습니다)
bash가 당신을 위해 선택하게 하세요.
당신이 말하는 경우
exec {fred}>/tmp/fred.out
echo hello >&$fred
그런 다음 bash는 파일 설명자를 선택하고 해당 값을 fred에 저장합니다. 그런 다음 두 번째 줄의 변수를 확장하여 >&
해당 파일 설명자로 리디렉션됩니다.
답변2
쉘이 결정하도록 두는 것이 더 좋습니다
exec {somefd}<>myfile
exec {mysock}<>/dev/tcp/192.168.0.5/8888
echo somefd = $somefd
echo my socket file handle = $mysock
# to write to the socket
echo "howdy" >&$mysock
# to read a line back
IFS= read -u $mysock line
echo "$line"
# when done close file handles
exec {somefd}>&-
exec {mysock}>&-
unset somefd mysock
# happy coding