我认为我的ttyUSB设备存在问题,因为不同进程同时有2个打开的ttyUSB fd。
它是这样的:
我有一个主要的python进程,打开几个ttyUSB fd,读取,写入,关闭和打开进程(使用popen)来处理每个ttyUSB(当然在fd关闭后)。
当我做'lsof | grep ttyUSB'看起来就像子进程启动时在主进程中打开的所有fd一样,与子进程相关联,即使它们已经被主进程关闭了。 (顺便说一句,fd与主进程无关)
这种行为正常吗? (tinycore,kernal 2.6.33.3),我有办法阻止吗?
感谢。
答案 0 :(得分:0)
默认情况下,进程在forks / execs(在popen()
期间发生)时打开的任何文件描述符都由子进程继承。如果这不是您想要发生的,您将需要在分叉后手动关闭文件描述符,或者使用fcntl(fd, F_SETFD, FD_CLOEXEC)
将fds设置为close-on-exec。 (这使得内核在执行新进程时会自动关闭文件描述符。)