3

(Clojure初心者)

私の Linux マシンでは、丸呑み/proc/cpuinfoするとエラーが発生します。

user=> (slurp "/proc/cpuinfo")
java.io.IOException: Invalid argument (NO_SOURCE_FILE:0)

その理由を知っている人はいますか?(/proc ファイルシステムは、Java の二流市民のようなものですか?)

編集: nakkaya.com から改作された次のコードは、問題なく動作します。

(with-open [rdr (java.io.BufferedReader. 
             (java.io.FileReader. "/proc/cpuinfo"))]
   (let [seq (line-seq rdr)]
   (apply print seq)))

なぜこの違いがあるのだろうか?

4

2 に答える 2

5

/proc 内のファイルでも同様の問題が発生しました。ただし、解決策は簡単です。

(slurp (java.io.FileReader. "/proc/cpuinfo"))
于 2012-01-20T05:06:30.923 に答える
3

問題は、Java が /proc で DataInputStream を開くことができないため、slurp 関数はここでは役に立たないことです。申し訳ありません :(

/proc/cpuinfo は、ファイル サイズがゼロで、読み取り時にバイトが生成されるため、少し奇妙です。これにより、よりスマートな Java ファイル処理クラスが混乱します。

ls -l /proc/cpuinfo
-r--r--r-- 1 root root 0 2012-01-20 00:10 /proc/cpuinfo

詳細については、このスレッドを参照してください http://www.velocityreviews.com/forums/t131093-java-cannot-access-proc-filesystem-on-linux.html

FileReader で開く必要があります。少し例を追加します

于 2012-01-19T21:35:55.923 に答える