diff options
Diffstat (limited to 'components')
| -rw-r--r-- | components/finsh/shell.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/components/finsh/shell.c b/components/finsh/shell.c index 824c60392d..3304733496 100644 --- a/components/finsh/shell.c +++ b/components/finsh/shell.c @@ -168,8 +168,17 @@ int finsh_getchar(void) } while (rt_device_read(device, -1, &ch, 1) != 1) + { rt_sem_take(&shell->rx_sem, RT_WAITING_FOREVER); - + if (shell->device != device) + { + device = shell->device; + if (device == RT_NULL) + { + return -1; + } + } + } return ch; #endif /* RT_USING_POSIX_STDIO */ #else |
