在 C 中浏览远程 linux 服务器上的目录
Browsing directories on remote linux server in C
在本地计算机上,您可以使用 C 中的 dirent.h 库来浏览文件和文件夹。您将如何在远程 linux 计算机上执行此操作?您会通过 ssh 连接传输 readdir() 命令吗?我想在不使用任何非标准库的情况下实现这一目标。
- 使用像
libssh
这样的 SSH 库。
- 它包括
SFTP
和 SCP
的 API,它们是 SSH 的文件操作组件。
- 这里有教程:
该链接页面中有 "Listing the contents of a directory" 的示例代码。
I would like to achieve this without using any non-standard libraries.
那是不可行的。虽然 Linux 发行版中包含的库(包括源头文件和可直接链接的 blob)可能 do 包括 libssh
由于其无处不在,但它不是 "standard" 因为 C 标准库没有提到 SSH/SFTP(甚至没有文件系统 API!),也没有 POSIX.
SSH(和 SFTP)是一个相对较新的协议 - 它仅创建于 1995 年,直到 1990 年代后期才被广泛采用(人们仍在使用 rlogin
, rsh
、标准 FTP,甚至 TELNET)- 它早于 FTP、HTTP、SMTP 和 SSL/TLS。
(记住 C 是非常小的 - 我的看法是它是一种用于操作和迭代内存的语言 - 其他一切,甚至系统调用,都不是 C 标准的一部分 - 这就是为什么你可以将 C 编译为 JavaScript,例如,你不能做任何有趣的事情,因为你不能从 JavaScript)
进行系统调用
在本地计算机上,您可以使用 C 中的 dirent.h 库来浏览文件和文件夹。您将如何在远程 linux 计算机上执行此操作?您会通过 ssh 连接传输 readdir() 命令吗?我想在不使用任何非标准库的情况下实现这一目标。
- 使用像
libssh
这样的 SSH 库。 - 它包括
SFTP
和SCP
的 API,它们是 SSH 的文件操作组件。 - 这里有教程:
该链接页面中有 "Listing the contents of a directory" 的示例代码。
I would like to achieve this without using any non-standard libraries.
那是不可行的。虽然 Linux 发行版中包含的库(包括源头文件和可直接链接的 blob)可能 do 包括 libssh
由于其无处不在,但它不是 "standard" 因为 C 标准库没有提到 SSH/SFTP(甚至没有文件系统 API!),也没有 POSIX.
SSH(和 SFTP)是一个相对较新的协议 - 它仅创建于 1995 年,直到 1990 年代后期才被广泛采用(人们仍在使用 rlogin
, rsh
、标准 FTP,甚至 TELNET)- 它早于 FTP、HTTP、SMTP 和 SSL/TLS。
(记住 C 是非常小的 - 我的看法是它是一种用于操作和迭代内存的语言 - 其他一切,甚至系统调用,都不是 C 标准的一部分 - 这就是为什么你可以将 C 编译为 JavaScript,例如,你不能做任何有趣的事情,因为你不能从 JavaScript)
进行系统调用