[unix] / dev / {udp, tcp}가 표준화되었거나 어디서나 사용 가능합니까?

나는 최근에 대해 배운 /dev/udp/dev/tcp유사 장치 여기 . 그것들은 일부 GNU / Linux 배포판에만 해당됩니까, 아니면 다른 유닉스 시스템에서 찾을 수 있습니까?

그들은 어떤 방식으로 표준화 되었습니까?

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



답변

이것은 운영 체제가 아닌 의 기능입니다 .

예를 들어 ksh88쉘이있는 Solaris 10의 경우 :

% 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

따라서 ksh88은 bash해석 /dev/tcp하지 않았습니다.

ksh93쉘이있는 Solaris 11의 경우 :

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

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


답변

Bash Info 노드 에서 추가하려면 다음을 수행하십시오 .

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 소켓을 열려고 시도합니다.


답변