Quando si esegue ogni cosa comeElixir File.read restituisce i dati vuoti quando si accede/proc/cpuinfo
File.read "/proc/cpuinfo"
>> {:ok, ""}
Lo stesso vale per la funzione Erlang equivalente. C'è qualche ragione per questo schema?
Quando si esegue ogni cosa comeElixir File.read restituisce i dati vuoti quando si accede/proc/cpuinfo
File.read "/proc/cpuinfo"
>> {:ok, ""}
Lo stesso vale per la funzione Erlang equivalente. C'è qualche ragione per questo schema?
Come @ José ha menzionato che proc fs è speciale poiché i contenuti del file sono generati al volo. Se guardi le dimensioni dei file in/proc vedrai che hanno la dimensione 0
.
Credo che questo sia il motivo per cui la funzione read
non restituisce nulla, il file è vuoto!
La soluzione è quello di forzare, leggere un numero di byte in ogni caso, in Erlang si può fare:
{ok, FD} = file:open("/proc/cpuinfo", [read]).
file:read(FD, 1024).
Per leggere tutto il contenuto continuare a leggere il numero fisso di byte fino EOF viene restituito da read
.
Le voci in proc live in un file system speciale chiamato procfs e credo che Erlang non supporti la lettura da esso. Ulteriori informazioni: https://unix.stackexchange.com/questions/121702/what-happens-when-i-run-the-command-cat-proc-cpuinfo
grazie. Illuminante passeggiata attraverso il sistema/proc. – djinn
Equivalente creato in ** elixir ** 'File.stream! ("/Proc/cpuinfo ", [],: line) |> Enum.each (fn chunk -> String.strip (chunk) |> IO.puts end) ' – djinn