我在linux平台上使用c的expect库。我的目的是通过C程序从一台服务器到另一台服务器进行sftp。为此我正在创建一个文件描述符:
d_fd = exp_spawnv(commString, argv);
这里 comString 是一个包含字符串“sftp”的 char 指针,而 argv 是 NULL 终止的字符数组。然后我正在创建一个 FILE 指针并将其与 d_fd 关联。代码如下:
FILE * d_fp = NULL;
d_fp = fdopen(d_fd, "rw+");
if(d_fp == NULL)
{
printf("unable to open FILE pointer");
return;
}
if(setvbuf(d_fp, NULL, _IONBF, 0) != 0)
{
printf("unable to unbuffer the stream");
return;
}
重复调用这段代码,但在第二次后它不起作用。第三次它失败,因为超时发生。exp_timeout 值为 35,但实际上超时发生在约 55 分钟后。
int result = exp_expectv(d_fd, (exp_case*)SFTP_EXP_LOGIN);