Thanks for gregory and xiang. yes... the right way is modified the error handling code in nsh_catfile not fwrite. I will repaired it again.
BR, wei peng Xiang Xiao <xiaoxiang781...@gmail.com> 于2019年12月24日周二 上午9:58写道: > Hi Peng, > From http://www.cplusplus.com/reference/cstdio/fwrite/ > fwrite return zero to indicate the error, the detailed info could get > from errno. > So the right change is modified the error handling code in > nsh_catfile, not the return type of fwrite. > > Thanks > Xiang > > On Tue, Dec 24, 2019 at 9:48 AM wei peng <alvin.pe...@gmail.com> wrote: > > > > hi David, > > > > Thanks for your reply. > > > > Yes...i know the interface interface is standard,so what i had changed in > > codes just repaired the problem.perhaps i should describe the problem in > > detail. > > > > > > I entering "dmesg" on both terminals,because of the “CONFIG_IOB_DEBUG” is > > enable so both of terminals will show messages continuously. > > Then close one of them,and the other one will be frozen,after that i > cannot > > connect the borad (via usart or telnet).but i am sure the systerm is work > > on. > > > > > > I found the "dmesg" command call a function named "int nsh_catfile()",and > > in this function,the logic is simple (read message from ramlog and write > it > > to terminals). > > when write it to terminals ,it will call "size_t fwrite()"function, As > you > > see the size_t is unsigned cannot be negative. that is the problem. > > i think if the terminal is close,the "size_t fwrite()"function should > > return a negative number,and the nsh_catfile should be broken. > > > > BR, > > > > wei peng > > > > David Sidrane <davi...@apache.org> 于2019年12月23日周一 下午5:36写道: > > > > > Hi wei peng > > > See below. > > > > > > On 2019/12/23 07:41:40, wei peng <alvin.pe...@gmail.com> wrote: > > > > hi~ > > > > I connected the target board to terminal via "telnet" , in some > cases > > > > the terminal will be frozen. Here are detailed steps: > > > > > > > > 1. Enable "CONFIG_IOB_DEBUG"[necessary]. > > > > 2. New two terminals and connect to target board via "telnet". > > > > 3. Input "dmesg" command,and the terminal will show information > > > > *continuously*.[two terminals are same][necessary] > > > > 4. Close one of the terminals,and the other one will be > frozen.but > > > the > > > > system is work on. > > > > > > > > I debug the system and repaired the bug,the file named commit.txt is > > > > detailed steps. > > > > BR, > > > > > > > > wei peng > > > > > > The interface is dictated by the OpenGroup stands [1] > > > [1] > https://pubs.opengroup.org/onlinepubs/009695399/functions/fwrite.html > > > > > > So that can not be changed. > > > > > > There must be a root cause related to what you are doing or a bug in > the > > > system. Check the configuration (compare it to other telnet board > configs). > > > > > > Are you Entering dmesg on both terminals or on one and it is showing up > > > the 2 terminals? > > > > > > David > > > > > > >