我正在使用libssh
在调用ssh_channel_write
之后,我必须知道是否有要读取的数据。 (但我不想检索数据。)
如果没有数据要读(例如,10秒后),我会再次拨打ssh_channel_write
ssh_channel_read
和ssh_channel_read_nonblocking
都不能这样做。 (并使用SSH_READ_PENDING检查ssh_get_status
也不起作用。)
有没有办法解决这个问题?
答案 0 :(得分:1)
这是NonBlocking ......
使用ssh_select()函数。它与常规select()非常相似,但使用通道而不是套接字。
int ssh_select(ssh_channel * channels,ssh_channel * outchannels, socket_t maxfd,fd_set * readfds,struct timeval * timeout);
例如,单通道实现:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cam1 = Camera.open();
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if ( isOn ) {
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
cam1.getParameters(params);
cam1.stopPreview();
isOn = false;
btn.setBackground(R.drawable.red_power_button_clip_art_9034);
} else {
params = cam1.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
cam1.getParameters(params);
cam1.stopPreview();
isOn = true;
btn.setBackground(R.drawable.green_power_button_clip_art_9023);
}