我正在尝试为文件传输实现命令行界面命令,并且将在内部调用
sshpass -p“password”scp -o UserKnownHostsFile = / dev / null -o StrictHostKeyChecking = no -r user @ remote-machine:/home/QA.txt / home / faadmin /
当我使用system()
运行此命令时,错误处理没有正确发生。如果在没有文件传输的情况下路由,或者在阻止执行CLI命令的某些时候找不到文件.so我执行上面的Linux命令后没有显示0和1以外的其他返回值。我可以获得其他返回值吗?
答案 0 :(得分:0)
您应该使用popen()
,因为system()
返回值会告诉您命令是否已执行。 E.G:
#include <stdio.h>
void main(void)
{
FILE *output = NULL;
char text[2048];
char cmd[256];
sprintf(cmd, "%s", "sshpass -p \"password\" scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -r user@remote-machine:/home/QA.txt /home/faadmin/");
output = popen(cmd, "r");
while(fgets(text, 1024, output) != NULL)
printf("%s", text);
pclose(output);
}