UNIX был разработан как операционная система для программ, написанных на ассемблере, позже для программ, написанных на C. В соглашении об ассемблере, который использует команда UNIX, а позднее в C, строки заканчиваются байтами NUL.Таким образом, вполне естественно использовать одно и то же соглашение при общении с операционной системой.Линус копировал UNIX API при разработке Linux, поэтому он имеет такой же дизайн.Функциональные возможности не теряются при завершении строк с NUL, поскольку байты NUL не могут появляться в путях или других идентификаторах.
Вызов write
записывает произвольные двоичные данные в файл.Эти данные не обязательно являются текстовыми, поэтому использование строкового соглашения не имеет особого смысла.