1
libssh2を使用して文字列をファイルに書き込もうとしています。そして私はそれをすることができます。libssh2を使用してリモートファイルに文字列を書き込む
問題はファイルに一度しか書き込めず、ファイルに追加することができず、引数を与えてlibssh2_scp_send
の文字列の実際のサイズより大きければサイズを与えますex。私は50を与えるが、文字列は5文字を持つ)が作成されますが、0バイトです。私が使用
機能:
int s7c_hardware::writeKey(char * filename, char * str)
{
channel = libssh2_scp_send(session, filename, 0777, strlen(str));
char buf[99999];
memcpy(buf, str, strlen(str));
buf[strlen(str)] = '\0';
libssh2_channel_write(channel, buf, strlen(str));
libssh2_channel_free(channel);
channel = NULL;
return 0;
}
なぜ 'memcpy()'ですか? 'strcpy()'とまったく同じ効果はありませんか?あなたはいつチャンネルを閉じますか? 'channel'はグローバル変数と思われるので... [libssh2_channel_close](https://www.libssh2.org/libssh2_channel_close.html)への呼び出しはありません。チャネル書き込みからエラーが返されました(無視します)。 – dhke
@dhke申し訳ありませんが、コードを入れてチャンネルを閉じるのを忘れてしまいました。なぜmemcpyですか?私のアプリでは、文字列の途中に "\ 0"ゼロターミネーターを持つことができるからです。 –
可能であれば、SCPではなくSFTPプロトコルを使用する必要があります。 SCPはあまり洗練されていません。 – Kenster