/dev/{udp,tcp}는 표준화되어 있거나 모든 곳에서 사용할 수 있나요?

/dev/{udp,tcp}는 표준화되어 있거나 모든 곳에서 사용할 수 있나요?

/dev/udp/dev/tcp최근 의사 장치 에 대해 배웠습니다.여기. 특정 GNU/Linux 배포판에만 해당됩니까, 아니면 다른 UNIX 시스템에서도 찾을 수 있습니까?

어떤 방식으로든 표준화되어 있나요?

지금까지 OS X, Arch Linux 및 CentOS에서 성공적으로 사용할 수 있었습니다.

답변1

이것은 특징입니다껍데기운영체제보다는

예를 들어, Solaris 10에서 셸을 사용하면 다음과 같습니다 ksh88.

% cat < /dev/tcp/localhost/22
ksh: /dev/tcp/localhost/22: cannot open

그러나 다음으로 전환하면 bash:

% bash
bash-3.2$ cat < /dev/tcp/localhost/22
SSH-2.0-Sun_SSH_1.1.5

그래서 bash설명했지만 /dev/tcpksh88은 그렇지 않았습니다.

Solaris 11의 ksh93셸 :

% cat < /dev/tcp/localhost/22
SSH-2.0-Sun_SSH_2.2

그래서 우리는 그것이 사용된 쉘에 매우 의존적이라는 것을 알 수 있습니다.

답변2

추가하려면 다음부터 시작하세요.Bash 정보 노드:

리디렉션에 여러 파일 이름이 사용되는 경우 Bash는 다음 표에 설명된 대로 이러한 파일 이름을 독점적으로 처리합니다. Bash가 실행되는 운영 체제가 이러한 특수 파일을 제공하는 경우 Bash는 해당 파일을 사용합니다. 그렇지 않으면 아래 설명된 동작을 통해 내부적으로 해당 파일을 에뮬레이션합니다.

'/dev/fd/FD' FD가 유효한 정수인 경우 파일 설명자 FD가 중복됩니다.

'/dev/stdin'에 대한 중복된 파일 설명자 0입니다.

'/dev/stdout' 파일 설명자 1이 중복되었습니다.

'/dev/stderr'에 대한 파일 설명자 2가 중복되었습니다.

'/dev/tcp/HOST/PORT' HOST가 유효한 호스트 이름 또는 인터넷 주소이고 PORT가 정수 포트 번호 또는 서비스 이름인 경우 Bash는 해당 TCP 소켓을 열려고 시도합니다.

'/dev/udp/HOST/PORT' HOST가 유효한 호스트 이름 또는 인터넷 주소이고 PORT가 정수 포트 번호 또는 서비스 이름인 경우 Bash는 해당 UDP 소켓을 열려고 시도합니다.

관련 정보