practice / blog

For personal blogging
1 stars 0 forks source link

Java에서 proc 파일 읽기 #75

Open practice opened 4 years ago

practice commented 4 years ago

일반적으로 Java에서 파일 읽는 방법으로는 제대로 동작하지 않는다.

Clojure에서 (slurp "/proc/version") 호출을 하게 되면 오류가 발생한다. 원인은 java 내부적으로 stat 시스템 호출을 사용하는데, /proc 파일의 경우 크기가 0이 된다고 한다. 해결 방법은 다름 코드를 참고하자.

아래는 "/proc/version" 파일을 읽어서 "microsoft"라는 문자열이 있으면 WSL이라고 판단하는 코드이다.

(defn is-wsl? []
  #_(slurp "/proc/version") ; proc file cannot be read
  (-> (java.net.URI. "file:///proc/version")
      java.nio.file.Path/of
      java.nio.file.Files/lines
      .findFirst
      .get
      string/lower-case
      (string/index-of "microsoft")))
practice commented 4 years ago

https://github.com/Doc-Cirrus/proctree 참고함