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.