当前位置: 技术问答>linux和unix
如何获取ftp的提示信息(输出)
来源: 互联网 发布时间:2016-10-30
本文导语: 在程序中调用ftp进行传送文件的时候,需要判断传送是否成功 如果手动进行ftp命令可以直接根据提示进行判断,在程序中如何去判断呢?有没有什么好的方法, 程序使用popen("ftp -inv", "w")的方式进行调用,类似于如...
在程序中调用ftp进行传送文件的时候,需要判断传送是否成功
如果手动进行ftp命令可以直接根据提示进行判断,在程序中如何去判断呢?有没有什么好的方法,
程序使用popen("ftp -inv", "w")的方式进行调用,类似于如下方式
if ((fp=popen("ftp -n","w"))==NULL) {
puts("Run ftp fail !");
exit();
}
//while ((fgets(str,255,fp))!=NULL) puts(str);
fprintf(fp,"open %sn",argv[1]);
fprintf(fp,"user %s %sn",argv[2],argv[3]);
fprintf(fp,"promptn");
fprintf(fp,"mget *%sn",argv[4]);
fprintf(fp,"byen");
pclose(fp);
现准备尝试这种方法,获取返回的提示信息,如226 等
但是发现通过fp=popen("ftp -n >> t.txt","w"))==NULL
以及使用freopen都获取不到,"mget *%sn", "put file" 等命令的提示信息
这些信息是可以在屏幕上显示的,应该怎样获取到呢
不知道我描述的是否清楚,请大家帮忙看看
如果手动进行ftp命令可以直接根据提示进行判断,在程序中如何去判断呢?有没有什么好的方法,
程序使用popen("ftp -inv", "w")的方式进行调用,类似于如下方式
if ((fp=popen("ftp -n","w"))==NULL) {
puts("Run ftp fail !");
exit();
}
//while ((fgets(str,255,fp))!=NULL) puts(str);
fprintf(fp,"open %sn",argv[1]);
fprintf(fp,"user %s %sn",argv[2],argv[3]);
fprintf(fp,"promptn");
fprintf(fp,"mget *%sn",argv[4]);
fprintf(fp,"byen");
pclose(fp);
现准备尝试这种方法,获取返回的提示信息,如226 等
但是发现通过fp=popen("ftp -n >> t.txt","w"))==NULL
以及使用freopen都获取不到,"mget *%sn", "put file" 等命令的提示信息
这些信息是可以在屏幕上显示的,应该怎样获取到呢
不知道我描述的是否清楚,请大家帮忙看看
|
|
可以考虑使用dup2,把命令的标准输出定向到管道或者文件中
|
可以尝试使用TCL语言。
例如:expect
例如:expect
|
楼上的建议很不错