Имам няколко въпроса за тези два файла. Не, че не рових из интернет, но обикновено намирах някакви теми, свързани с проблеми и без добри обяснения, така че подозирам, че тук може да получа по-хубави отговори.
1. За какво се използва всеки от тези два файла, каква информация има вътре, кой пише в тях и кой (и защо) ги чете
/sbin/telinit използва
/dev/initctl, за да комуникира със
/sbin/init. За повече информация:
man 8 init/dev/log се използва от user space програми, за да предават информация към syslogd. Устройството бива отворено за писане при извикване на openlog() (ако се използва флаг LOG_NDELAY), или при първото използване на syslog() от дадена програма. От своя страна syslogd (или syslog-ng, etc.) отварят
/dev/log за четене още при стартиране. Тук не мога да посоча източник на информацията, тъй като тя е събирана от различни места с течение на времето. Евентуално
man 3 syslog би могъл да помогне донякъде.
2. Защо /dev/initctl е fifo файл?
3. Защо /dev/log е socket?
(Отговорът на 1 логично трябва да определя и отговорите на 2 и 3:))
Логично би трябвало да го определи, но... в един идеален свят. Имам някакво мнение по въпроса, но е чиста спекулация, така че ще го запазя за себе си.
4. (offtopic) Мрежовите сокети (тези, дето създаваме с домейн AF_INET) считат ли се също за тип файл (на базата на това, че ги достъпваме по файлов дескриптор и пишем и четем с read() и write()) или само Unix domain сокетите се считат за тип файл? Тук нямам предвид дали участват във файловата система в някоя директория под някакво име, а примерно дали за всеки отделен екземпляр се заделя inode. Например според wikipedia неименуваният pipe не е вид файл, а само именувания, но нас са ни учили, че и двете са, просто първото остава "скрито", иначе си има inode и всички нужно.
AFAIK, AF_INET sockets също си имат inodes (under the hood, разбира се), т.е. по твоята дефиниция би трябвало да са файлове. А ако погледнем по-широко на нещата и разгледаме операционна система като Plan9 например, то там нещата не се случват "под капака", а всичко си е достъпно чрез файловата система, включително и AF_INET sockets.