3
可以有人給我簡單的例子中C,使用配管()系統調用來的和使用ssh連接到遠程服務器,並執行一個簡單的ls命令和解析的答覆。由於事先..管系統調用
可以有人給我簡單的例子中C,使用配管()系統調用來的和使用ssh連接到遠程服務器,並執行一個簡單的ls命令和解析的答覆。由於事先..管系統調用
int main()
{
const char host[] = "foo.example.com"; // assume same username on remote
enum { READ = 0, WRITE = 1 };
int c, fd[2];
FILE *childstdout;
if (pipe(fd) == -1
|| (childstdout = fdopen(fd[READ], "r")) == NULL) {
perror("pipe() or fdopen() failed");
return 1;
}
switch (fork()) {
case 0: // child
close(fd[READ]);
if (dup2(fd[WRITE], STDOUT_FILENO) != -1)
execlp("ssh", "ssh", host, "ls", NULL);
_exit(1);
case -1: // error
perror("fork() failed");
return 1;
}
close(fd[WRITE]);
// write remote ls output to stdout;
while ((c = getc(childstdout)) != EOF)
putchar(c);
if (ferror(childstdout)) {
perror("I/O error");
return 1;
}
}
注意:該示例不分析ls
的輸出,因爲沒有程序應該這樣做。當文件名包含空白時,這是不可靠的。
您可能需要更新您對管道及SSH的問題。 – 2011-01-13 14:12:38
他們可能可以。但是這將是兩個不同的例子 - 一個用於pipe(),另一個用於ssh()。 – 2011-01-13 14:19:00