0
f=fopen("/dev/ttyUSB0","r")
char c;
c=getc(f);
while(c!=EOF) {
    c=getc(f);
}

在上面的代码中,当我拔下设备时,循环永远不会在 beaglebone ubuntu 上中断,这是 arm 架构。上面的代码在我的 i386 ubuntu 桌面上运行。

- 编辑 -

它非常奇怪!迈克的int c; 没用。观看c给定,c=255但即使我更改c!=EOFc!=255循环也不会中断!试了一个小时后我很沮丧!!!

- 编辑 -

我试过了fstream fin("/dev/ttyUSB0", fstream::in);。当我拔下输入串行设备时fin>>c永远不会返回并且 CPU 使用率为 100%!我希望它是一个错误!

4

2 回答 2

4

将类型c从更改charintEOF在 的范围之外char

为了澄清,通过“更改类型”,我的意思是将声明更改为

int c;

在将int其截断为char.

于 2013-11-07T14:42:12.777 回答
0

在 C++ 中,使用 cin 更容易。

int main()
{
    char ch;

    while (true)
    {
        cin >> ch;
        if (!cin.good())
            break;

        // Do something with you character
    }
}

当 con >> ch 失败时,这将停止。

于 2013-11-07T14:53:57.780 回答