java.exe가 cygwin에 표시되지 않지만 명령 프롬프트에 표시되는 이유는 무엇입니까?


답변:


14

Windows 8 / 7 / Vista x64 버전에서 C : \ Windows \ System32 폴더 의 내용은 응용 프로그램 의 비트 크기 에 따라 다릅니다 .

64 비트 응용 프로그램 (예 : Windows 명령 프롬프트 cmd.exe)의 경우 파일 시스템 리디렉션이 없습니다
C:\Windows\System32(소프트웨어)-> C:\Windows\System32(디스크).
따라서 C : \ Windows \ System32 폴더에는 64 비트 응용 프로그램의 관점에서 64 비트 DLL 및 EXE 파일이 포함됩니다.

bash.exeWindows x64에서 WoW64 하위 시스템을 통해 실행되는 32 비트 응용 프로그램 (예 : Cygwin 등)의 경우 파일 시스템에는
C:\Windows\System32(소프트웨어)-> C:\Windows\SysWOW64(디스크)의 두 가지 리디렉션이 있습니다 .
C:\Windows\Sysnative(소프트웨어에서)-> C:\Windows\System32(디스크에서).
따라서 C : \ Windows \ System32 폴더에는 32 비트 응용 프로그램의 관점에서 32 비트 DLL 및 EXE 파일이 포함됩니다.

java*.exe32 비트 응용 프로그램 (예 : Cygwin 's bash.exe)에서 64 비트 응용 프로그램 및 DLL 파일 (예 :) 에 액세스하려면 C:\Windows\Sysnative경로 또는 /cygdrive/c/Windows/SysnativeCygwin 표기법 을 사용해야 합니다 .

(업데이트되고 확장 된 답변입니다)


예, 여기 있습니다 : Chloe @ xps / cygdrive / c / Windows / sysnative $ ls -la java * -rwx ------ + 1 시스템 시스템 188320 3 월 7 일 04:43 java.exe
— Chloe

왜 그렇게합니까? DOS 프롬프트에서 sysnative를 볼 수 없습니다.
— Chloe

2
따라서 cygwin의 bash.exe는 32 비트 응용 프로그램으로 실행되며 해당 컨텍스트에서 C : \ Windows \ System32는 C : \ Windows \ SysWOW64 (java * 파일이없는 폴더)에 매핑됩니다. Windows 명령 프롬프트 (cmd.exe)는 64 비트 응용 프로그램으로 실행되므로 실제 C : \ Windows \ System32를 볼 수 있습니다. C : \ Windows \ sysnative를 사용하여 32 비트 응용 프로그램에서 실제 system32 디렉토리에 액세스하십시오. 이 주제에 대한 추가 정보 : msdn.microsoft.com/en-us/library/windows/desktop/…
— Mikhail Kupchik

와우 그것은 완전히 거꾸로 혼란스러워!
— Chloe

1
예, 64 비트 시스템 DLL 및 EXE 파일에 대해 \ Windows \ system64 디렉토리를 만들어야하지만 불행히도 System32 디렉토리에 64 비트 파일이 있고 어색한 파일 시스템 리디렉션이 있습니다.
— Mikhail Kupchik
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.