无法在守护程序中打开ttyUSB端口

时间:2013-07-26 13:11:49

标签: c++ linux serial-port daemon

我在linux中的守护进程中使用端口时遇到问题。 我使用来自open的{​​{1}},例如fcntl.h,当我在守护程序中使用它时,我得到serHandle_ = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY);。当我在守护进程外使用它时一切正常。我设置了0

您是否知道问题可能是什么?也许权限?即使我以超级用户身份启动守护程序,我仍然会从sudo chmod 666 /dev/ttyUSB0获得0

下面你可以看到我的类方法的代码片段,它应该初始化守护进程:

open

2 个答案:

答案 0 :(得分:2)

来自man的{​​{1}}页:“open()和creat()返回新的文件描述符,如果发生错误则返回-1”

open是一个完全有效的文件描述符(对于非守护程序应用程序,是您的0文件描述符)。如果stdin失败,它将返回open,因此您的代码工作正常。

答案 1 :(得分:1)

当您关闭标准文件描述符(stdin / stdout / stderr)时,下一次调用open时可能会重用这些文件描述符。因此,当open返回0时,这很正常。

如果open失败,则会返回-1

我建议您更仔细地阅读open手册页。