0
我正在編寫一個記錄電池充電到CSV文件的工具(我知道這是一個bash單線程,但這是我的另一個Common Lisp學習練習)。確定ACPI狀態文件的長度
我的計劃是將整個電池狀態文件存入內存,因爲它保證是一個小文件。但file-length
始終文件尺寸返回0,而在其他文件中正常工作:
* (defun stream-length (path)
(with-open-file (stream path)
(file-length stream)))
STYLE-WARNING: redefining COMMON-LISP-USER::STREAM-LENGTH in DEFUN
STREAM-LENGTH
* (stream-length "/home/duncan/foo")
4
* (stream-length "/proc/acpi/battery/BAT0/state")
0
事實證明,這不僅是SBCL; Perl中的工作方式:
$ perl -e 'print -s "/home/duncan/foo"; print "\n"'
4
$ perl -e 'print -s "/proc/acpi/battery/BAT0/state"; print "\n"'
0
但文件明確包含的東西:
$ cat /proc/acpi/battery/BAT0/state
present: yes
capacity state: ok
charging state: discharging
present rate: 0 mW
remaining capacity: 3945 mWh
present voltage: 10800 mV
所以我假定有什麼特別的狀態文件。有人能告訴我它是什麼嗎?
我會說閱讀,直到在大多數情況下EOF是正確的方法:兩步解決方案是一個明顯的種族。 – 2012-04-06 15:59:12