为什么守护进程会配置一个端口,然后该端口不可用?

为什么守护进程会配置一个端口,然后该端口不可用?

Ubuntu 12.04 安装在 AMD64 Fujitsu 工业 PC 上。端口位于 Shentek PCI 卡上,“管理器”守护进程修改 xr17v35x 驱动程序(使用缓冲区中的命令进行系统调用),然后启动使用端口的其他进程(也是守护进程)(也使用缓冲区中的“/etc/init.d/start&”进行系统调用)。这些进程依次从文件中读取配置数据,打开端口(例如 /dev/ttyXR4),然后使用从配置文件中读取并传递给 stty 的字符串配置端口(再次通过缓冲区中的命令和配置数据进行系统调用)。

我在 Debian 上看到过类似情况:我配置了一个端口,然后其他东西(我不知道)用错误的波特率破坏了端口。在那项工作中,我有一个可以回复我消息的设备,所以如果它停止工作或返回的数据看起来乱七八糟,我可以再次运行我的 Initialise() 函数。这避免了这个问题。

在这份工作中,我没有那么奢侈,我们只能从人工观察中得知,我发送消息的设备没有做它们应该做的事情。我有一个 TestRig,它能够将 PROCESS_RESET 消息注入相关守护进程,当我这样做时,它会再次运行 Initialise() 函数并实现正常运行。

因此,要么我的设置方式错误,要么我需要找到破坏端口设置的原因并将其禁用。

有什么建议么?

编辑:谁在咆哮?我试图描述症状和它们出现的条件。顺便说一下,端口是一张 PCI 卡上的 4 个 RS232,其他端口是另一张 PCI 卡上的 2 个 RS485。我怀疑,但无法证明,xr17v35x 驱动程序或其他 Linux 组件自行决定初始化驱动程序找到的卡上的端口,这发生在我尝试从自己的代码中执行此操作后的某个阶段。提出问题的另一种方式是:是否有人有这种情况的经验可以启发我?

相关内容