Я прочитал справочную страницу mknod
, которая (насколько я могу судить) используется для создания символьного устройства, такого как /dev/zero
, но я не понимаю, как вы могли бы получить его, чтобы получить бесконечный поток с нулем биты (или другой шаблон). Какова процедура создания таких символических устройств?
3 ответа
Все, что делает mknod
- это связывает файл устройства с драйвером устройства. Есть драйверы устройств, которые реализуют взаимодействие с реальными устройствами, и есть драйверы устройств, которые просто реагируют на запросы чтения-записи полезными способами. Если вы хотите, вы можете сесть и написать драйвер, который возвращает текст Star Spangeled Banner. Но это вопрос кодирования, а не поиска правильных аргументов для mknod
.
mknod
создает узел устройства, но VFS обнаруживает доступ к узлу устройства и перенаправляет их в соответствующий драйвер в ядре для обработки. Все узлы устройства, от /dev/null
до /dev/sdX
до /dev/ttyXX
до /dev/videoX
, обрабатываются таким образом.
Если вы просто хотите воссоздать способности /dev/zero
но с символом, отличным от нуля / нуля, вы можете использовать tr
чтобы изменить все нули ("\000" в восьмеричном) на что-то другое.
Например, чтобы выпустить бесконечный поток "а", вы можете сделать:
cat /dev/zero | tr "\000" "\141" | head -c 20
aaaaaaaaaaaaaaaaaaaa
Или пропустите кошку и выведите значение M (1024 * 1024) с
head -c 1M /dev/zero |tr "\000" "\141"
«\141» - символ "а".
Посетите этот сайт http://www.asciitable.com/ для краткой краткой страницы ASCII - восьмеричных кодов. Это на самом деле это изображение здесь:
(Я знаю, старый "решенный" вопрос, но я нашел его при поиске бесконечного потока разных символов, так что это "решает" проблему «как сделать /dev /one или /dev /[Different Character]»).)