fd = open("/dev/ttyUSB0",O_RDWR | O_NOCTTY);
/* O_NOCTTY - No terminal will control the process */
我们为什么要指定或不指定此选项?它做什么和不做什么?
答案 0 :(得分:1)
GNU C library的文档中对此进行了回答:
如果命名文件是终端设备,请不要将其作为该过程的控制终端。有关成为控制终端意味着什么的信息,请参见Job Control。
在GNU / Hurd系统和4.4 BSD上,打开文件绝不会使其成为控制终端,并且
O_NOCTTY
为零。但是,当您打开作为终端设备的文件时,GNU / Linux系统和其他一些系统对O_NOCTTY
使用非零值并设置控制终端。为便于携带,在避免这种情况很重要时,请使用O_NOCTTY
。
也就是说,由于USB串行设备被视为终端,所以使用该标志是因为您不希望它成为 like 终端,并允许设备来启动/停止恰好与给定用户连接的作业(例如进程)。
进一步阅读: