태그 보관물: portability

portability

// foo / bar는 어떤 시스템에서 / foo / bar와 다른가? Windows POSIX 계층

POSIX 사양에는 구현이 두 가지로 시작하는 경로를 특별히 처리 할 수 ​​있도록 ( 1 , 2 , 3 …) 조항이 /있습니다.

POSIX의 응용 프로그램 즉지지 않습니다합니다 (POSIX 사양에 작성된 응용 프로그램은 모든 POSIX 호환 시스템에 이식하는) //foo/bar과 동일하다 /foo/bar(그들은 그 가정 할 수 있지만 ///foo/bar동일하다 /foo/bar).

이제 //foo특별하게 취급하는 POSIX 시스템 (역사적이며 여전히 유지 관리되는)은 무엇입니까? POSIX 조항은 Microsoft가 유닉스 변형 (XENIX) 및 Windows POSIX 계층 (누구도 확인할 수 있습니까?)에 대해 추진하고 있다고 믿었습니다 (지금은 잘못 입증되었습니다 ).

Cygwin에서 사용되며 Microsoft Windows의 POSIX와 유사한 계층이기도합니다. Microsoft 이외의 Windows 시스템이 있습니까? OpenVMS?

//foo/bar특별한 시스템에서는 어떤 용도로 사용됩니까? //host/path네트워크 파일 시스템 액세스를 위해? 가상 파일 시스템?

시스템 API가 아닌 경우 유닉스 계열에서 실행되는 일부 응용 프로그램//foo/bar경로를 특수하게 처리 /foo/bar합니까 (파일 시스템의 경로로 처리 되는 컨텍스트에서 )?


Edit , 나는 austin-group 메일 링리스트//foo/bar 에서 스펙 의 처리 원점에 대한 질문을했으며 , 토론은 흥미로운 글입니다 (적어도 고고학의 관점에서).



답변

이것은 지금까지 주어진 답변의 편집 및 색인입니다. 이 게시물은 커뮤니티 위키 이며 100 명 이상의 평판을 가진 사람이 편집 할 수 있으며 아무도 평판을 얻지 못합니다. 자신의 답변을 게시하고 여기에 링크를 추가하십시오 (또는 내가 기다릴 때까지 기다리십시오). 이상적으로이 답변은 요약 일뿐입니다 (짧은 항목이있는 반면 다른 개별 답변에는 세부 사항이 있음).

현재 적극적으로 유지 관리되는 시스템 :

기능이없는 시스템

//foo/bar경로를 특별히 다루는 응용 프로그램


답변

시스템 API가 아닌 경우 유닉스 계열에서 실행되는 일부 응용 프로그램이 // foo / bar 경로를 특수하게 처리합니까?

//depot/A/B/C/D경로를 사용 하여 저장소를 참조하는 Perforce를 알고 있습니다. Perforce는 //Client/C/D클라이언트가를 가리킬 때 경로 도 지원 합니다 //depot/A/B/. 여기서 로컬 FileSystem에는 이러한 경로가 없을 수 있습니다.

p4 filelog //depot/A/B/C/Dfile이 없어도 해당 파일의 기록을 표시합니다 /depot/A/B/C/D.

p4 filelog C/D 적절한 디렉토리에서 실행 된 경우 해당 파일의 기록도 표시합니다.

참조 : https://www.perforce.com/perforce/r12.1/manuals/cmdref/o.fspecs.html


답변

수십 년 전에 Tektronix Utek (BSD 4.2 기반 Unix, 내셔널 세미 컨덕터 32016 CPU, 모토로라 68020 )은 dfs 서버 //foo/bar/bar파일을 참조 하는 DFS (분산 파일 시스템)를 제공했습니다 foo. 나중에 Sun의 NFS에서 폐기되었습니다.

불행히도, 나는 그것을 뒷받침하지는 않았지만 결국에는 지하실에서 Utek 문서를 찾아서이 회신을 업데이트 할 수 있습니다.


답변

이 답변 의 리드에 따라 . 그리고에서 2-15 페이지를 읽고 Bitsavers에서 수동 (감사 @grawity ).

공유 데이터
기본적으로 공유되는 Domain / OS 분산 파일 시스템의 두 번째 설계 원칙은 전역 적으로 통일 된 네임 스페이스를 의미합니다. 분산 파일 시스템의 이름 공간은 거대한 시분할 파일 시스템의 이름 공간과 같이 사용자에게 나타납니다. 절대 경로 이름이 네트워크 루트 이름 (///)으로 시작될 수 있다는 점을 제외하면 일반적인 UNIX 계층 이름 공간입니다. 로컬 노드의 루트 (/ 디렉토리)에 상대적인 경로 이름을 표현할 수도 있습니다.

“첫 인쇄 : 1985 년 7 월” 의 오래된 매뉴얼 도 있습니다 . 1-4 페이지의

그림 1-2의 이중 슬래시 (//)는 네이밍 트리의 최상위 레벨 인 네트워크 루트 디렉토리를 나타냅니다.

따라서 Apollo의 Domain / OS가 //네트워크 루트에 사용되었음을 확인했습니다 .


답변

다른 응용 프로그램 : Blender 는 Leading //을 프로젝트 디렉토리 ( .blend파일이 저장된 디렉토리)에 대한 참조로 취급합니다 . 관련 매뉴얼 페이지는 다음과 같습니다 .

이것은 유닉스 계열이 아닌 운영 체제 (예 : Windows)에서도 마찬가지입니다.


답변

ReactOS에의 프로젝트 – 신약 커널 및 관련 API의 무료 및 오픈 소스 구현 – 분명히 또한 자체 구현하기 위해 수행하고있다 는 Interix -like POSIX 하위 시스템을 MS의 원래 OS / 2 서브 시스템도되지만 ( 상황에 언급 , 언급하지 ReactOS 아날로그로 만들어 짐) .

노력은 지금까지왔다 비록 작은 , fork()분명히 현실이다. 다음은 공개 이슈 아래에 나열된 서브 시스템 프로젝트 페이지에서 발췌 한 내용입니다 .

경로

POSIX 응용 프로그램에서 Win32 경로를 사용하는 가장 좋은 방법은 무엇입니까? 아이디어 :

  • translate //<device>/<path> into \\.\<device>\<path> (드라이브 문자- //<letter>/<path>=> <letter>:\<path>-및 특수 이스케이프 //./<raw text>=> \\.\<raw text>. UNC 경로는로 지정할 수 있음 //unc/<path>) . //경로는 구현 별 동작에 대한 표준으로 예약되어 있으며 //<letter>/Win32 경로를 이스케이프 하는 구문은 기존 POSIX 호환성 환경에서 널리 사용됩니다.

  • “맨손”Win32 경로를 인식하는 휴리스틱

  • Win32 경로 및 //경로에 대한 대소 문자를 구분하지 않는 조회 (표준은// 경로에 대해 이러한 종류의 구현 특정 동작을 허용 합니까?) .

나는 그것이 얼마나 많이 구현되었는지 확실하지 않기 때문에 그것이 어떻게 자격이되는지 확실하지 않지만 문제에 대해 유용한 흥미로운 설명이라고 생각했습니다.


답변

1980 년대에 SEL / Gould 는 UTX-32라는 Unix 운영 체제를 가지고 있었으며 이는 Solaris 와 동일합니다
. 즉, 호스트의 원격 액세스 경로 입니다 . 나는 그것에 대한 문서를 찾을 수 없으므로 이것이 RFS인지 아니면 병렬 진화인지 (또는 AT & T인지) 모른다.//host/path/net/host/pathpathhost스톨 굴드에서 인수).