2017-07-06 22 views
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; 
} 
+0

なぜ 'memcpy()'ですか? 'strcpy()'とまったく同じ効果はありませんか?あなたはいつチャンネルを閉じますか? 'channel'はグローバル変数と思われるので... [libssh2_channel_close](https://www.libssh2.org/libssh2_channel_close.html)への呼び出しはありません。チャネル書き込みからエラーが返されました(無視します)。 – dhke

+0

@dhke申し訳ありませんが、コードを入れてチャンネルを閉じるのを忘れてしまいました。なぜmemcpyですか?私のアプリでは、文字列の途中に "\ 0"ゼロターミネーターを持つことができるからです。 –

+0

可能であれば、SCPではなくSFTPプロトコルを使用する必要があります。 SCPはあまり洗練されていません。 – Kenster

答えて

0

は、今私はなぜ理解! SCPは文字通りダウンロードを開始し、ダウンロードを停止しているためSCPはファイルに追加できませんが、SCPはそれを行うことはできませんが、SFTPは可能です!

関連する問題