当前位置: 技术问答>linux和unix
求linux 下 C/c++ 实现SFTP上传文件的代码,或shell 写的如何区分上传是否成功?
来源: 互联网 发布时间:2016-04-29
本文导语: 如题求linux系统下C/C++实现SFTP上传文件的代码,最好有一定的中文注释,谢谢了。 或是, 我看FTP上传的shell写的比较简单,但是,如何能判断是否上传成功哪?? 如果想做上传的进度条的话?要如何处理哪?怎么判...
如题求linux系统下C/C++实现SFTP上传文件的代码,最好有一定的中文注释,谢谢了。
或是,
我看FTP上传的shell写的比较简单,但是,如何能判断是否上传成功哪??
如果想做上传的进度条的话?要如何处理哪?怎么判断上传了百分之多少哪??
有什么好的思路,最好有带注释的程序示例。
谢谢了!!!!
如果我哪问的不明白,请指出,我再补充。
或是,
我看FTP上传的shell写的比较简单,但是,如何能判断是否上传成功哪??
如果想做上传的进度条的话?要如何处理哪?怎么判断上传了百分之多少哪??
有什么好的思路,最好有带注释的程序示例。
谢谢了!!!!
如果我哪问的不明白,请指出,我再补充。
|
可以脚本 except
终端编程,have a look
#include
#include
#include
#include
#include
#include
#include
#include
void do_passwd( int pty, const char *passwd, const char *yes_no );
int main( int argc, char *argv[] )
{
argv[1]="yes";
argv[2]="momentx";
int pty, slave;
char pty_name[PATH_MAX];
int ret;
pid_t child;
if ( argc !=1 ){
fprintf( stderr, "Usage: %s n", argv[0] );
exit( EXIT_FAILURE );
}
ret = openpty( &pty, &slave, pty_name, NULL, NULL );
if ( ret == -1 ){
perror( "openpty" );
exit( EXIT_FAILURE );
}
child = fork();
if ( child == -1 ){
perror( "fork" );
exit( EXIT_FAILURE );
}
else if ( child == 0 ){
close( pty );
login_tty( slave );
// execl( "/usr/bin/ssh", "ssh","work@your_ip", NULL );
execl( "/usr/bin/sshfs", "sshfs","root@ip:/root/public ","./temp", NULL );
}
close( slave );
printf( "pty name: %sn", pty_name );
//do_passwd( pty, argv[1], argv[2] );
do_passwd( pty, argv[2], argv[2] );
exit( EXIT_SUCCESS );
}
void do_passwd( int pty, const char *passwd, const char *yes_no )
{
char buffer[80];
int ret;
fd_set reads;
int input_passwd = 0;
while(1){
FD_ZERO( &reads );
FD_SET( pty, &reads );
ret = select( pty+1, &reads, NULL, NULL, NULL );
if ( ret == -1 ){
perror( "select" );
break;
}
ret = read( pty, buffer, sizeof(buffer) );
if ( ret
终端编程,have a look
#include
#include
#include
#include
#include
#include
#include
#include
void do_passwd( int pty, const char *passwd, const char *yes_no );
int main( int argc, char *argv[] )
{
argv[1]="yes";
argv[2]="momentx";
int pty, slave;
char pty_name[PATH_MAX];
int ret;
pid_t child;
if ( argc !=1 ){
fprintf( stderr, "Usage: %s n", argv[0] );
exit( EXIT_FAILURE );
}
ret = openpty( &pty, &slave, pty_name, NULL, NULL );
if ( ret == -1 ){
perror( "openpty" );
exit( EXIT_FAILURE );
}
child = fork();
if ( child == -1 ){
perror( "fork" );
exit( EXIT_FAILURE );
}
else if ( child == 0 ){
close( pty );
login_tty( slave );
// execl( "/usr/bin/ssh", "ssh","work@your_ip", NULL );
execl( "/usr/bin/sshfs", "sshfs","root@ip:/root/public ","./temp", NULL );
}
close( slave );
printf( "pty name: %sn", pty_name );
//do_passwd( pty, argv[1], argv[2] );
do_passwd( pty, argv[2], argv[2] );
exit( EXIT_SUCCESS );
}
void do_passwd( int pty, const char *passwd, const char *yes_no )
{
char buffer[80];
int ret;
fd_set reads;
int input_passwd = 0;
while(1){
FD_ZERO( &reads );
FD_SET( pty, &reads );
ret = select( pty+1, &reads, NULL, NULL, NULL );
if ( ret == -1 ){
perror( "select" );
break;
}
ret = read( pty, buffer, sizeof(buffer) );
if ( ret