Параметры передаются в программы как строки C; в частности, системный вызов execve()
(самый низкий уровень, видимый для программ и обычно эфира, очень близкий или идентичный API ядра) использует строки C, поэтому невозможно передать \0
в параметре. Обратите внимание, что, хотя обычный способ, которым вектор параметров передается ядром в адресное пространство процесса, является смежным, так что встроенный \0
действительно разделит параметр, низкоуровневый интерфейс exec()
использует список (char *)
s, поэтому встроенный \0
просто завершит параметр рано.