Czytam mknod
stronę podręcznika , która jest (o ile mogę powiedzieć) tym, czego byś użył, aby stworzyć urządzenie postaci /dev/zero
, ale nie widzę, jak byś go dostał, aby uzyskać nieskończony strumień zer bitów (lub inny wzorzec ). Jaka jest procedura tworzenia takich urządzeń postaci?
7
zero_lseek
,read_zero
,write_zero
,mmap_zero
wdrivers/char/mem.c
./dev/one
?Odpowiedzi:
Wszystko
mknod
to wiąże plik urządzenia ze sterownikiem urządzenia. Istnieją sterowniki urządzeń, które implementują interakcję z rzeczywistymi urządzeniami, i istnieją sterowniki urządzeń, które po prostu reagują na żądania odczytu i zapisu w użyteczny sposób. Jeśli chcesz, możesz usiąść i napisać sterownik, który zwraca słowa Star Spangeled Banner . Ale to kwestia kodowania, nie znajdowania odpowiednich argumentówmknod
.źródło
mknod
tworzy węzeł urządzenia, ale VFS wykrywa dostęp do węzła urządzenia i przekierowuje je do odpowiedniego sterownika w jądrze w celu obsługi. Wszystkie węzły urządzeń, od/dev/null
celu/dev/sdX
do/dev/ttyXX
celu/dev/videoX
są traktowane w ten sposób.źródło
Jeśli chcesz po prostu odtworzyć
/dev/zero
zdolności, ale z postacią inną niż zero / null, możesz użyć,tr
aby zmienić wszystkie zera („\ 000” w liczbach ósemkowych) na coś innego.Aby na przykład wypluć niekończący się strumień „a”, możesz:
Lub pomiń kota i uzyskaj wartość M (1024 * 1024) za pomocą
„\ 141” jest znakiem „a”.
Zobacz tę stronę http://www.asciitable.com/, aby uzyskać szybką krótką stronę ASCII - kody ósemkowe. To właściwie ten obraz tutaj:
(Wiem, stare „rozwiązane” pytanie, ale znalazłem je, szukając nieskończonego strumienia różnych znaków, więc to „rozwiązuje” problem „jak zrobić / dev / one lub / dev / [inny znak]”).
źródło
head | tr >file
ma różne poziomy kosztów ogólnych. W zależności od systemu zajmuje to jeden, półtora lub dwa razy tyle, ile tylkohead >file
.head -c 3G ... > /dev/null
zajęło mniej niż sekundę, ale dodanie fajkitr
zajęło 21 sekund. Nadal około 150 Mb / s, więc prawdopodobnie szybciej niż większość dysków twardych może nadążyć. Ale to działa i nie ma wbudowanego / dev / one lub / dev / a itp.