I am using no-blocking API
 libssh2_channel_exec(channel,cmd);
 while(1)
 {
        int nread = libssh2_channel_read(channel, buf, buflen);
        if(nread>0)
               handle the buf
        if(nread==LIBSSH2_ERROR_EAGAIN)
                waitsocket();
        if(stop)
            break;
 }
 while(libssh2_channel_close(channel)==LIBSSH2_ERROR_EAGAIN)
          waitsocket();
 libssh2_channel_free(channel);
 when cmd=ping 8.8.8.8, and running the cmd, make stop=true,  
libssh2_channel_close(channel) can close the channel successful.
 But when cmd=ping (the address cannot be pinged) or other commands which  
output nothing. and then I make stop=true, the program would hangs at  
libssh2_channel_close(channel), and it always return LIBSSH2_ERROR_EAGAIN, so I 
 cannot close the channel and cannot stop the command too. 
 So, How can I force close the channel or how can I stop the command runing  in 
the remote host?
  
 Regrads,
 Peter
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

Reply via email to