Ответ на этот вопрос приведен в документации для библиотеки GNU C :
Если указанный файл является терминальным устройством, не делайте его управляющим терминалом для процесса. См. Job Control , для информации о том, что значит быть управляющим терминалом.
В системах GNU / Hurd и 4.4 BSD открытие файла никогда не делает его управляющим терминалом, а O_NOCTTY
равно нулю. Однако системы GNU / Linux и некоторые другие системы используют ненулевое значение для O_NOCTTY
и устанавливают управляющий терминал при открытии файла, который является терминальным устройством; чтобы быть переносимым, используйте O_NOCTTY
, когда важно избежать этого.
То есть, поскольку последовательное USB-устройство рассматривается как терминал, используйте флаг, если вы не собираетесь, чтобы он был подобным терминалу и позволяло устройству запуск / остановка заданий (например, процессов), которые связаны с ним с данным пользователем.
Дополнительное чтение: