c - 如何使用可以远程连接的控制台创建 linux C 应用程序

标签 c linux console-application remote-access debian-stretch

我有一个用 在 Debian (Stretch) 下运行的 C。中的一个 threads 是一个简单的控制台,支持多个 命令来控制应用程序。一般 此应用程序在以下时间自动启动 系统启动并在后台运行 控制台线程被禁用。

我正在寻找一种远程“连接”应用程序的方法,以便我可以使用控制台。 连接可以是直接使用 端口或者我可以直接 ssh 到盒子然后 连接到应用程序。

在开发过程中,我只是以交互方式运行应用程序 但希望在它有之后进行调试 已经开始了。

我认为像 netcat 这样的东西可能有用,但它 似乎使用 TCP/IP 端口,而控制台线程只连接到标准输入/标准输出。

有没有办法做到这一点?

最佳答案

阅读有关 Linux 编程的更多信息,也许是旧的 ALP (高级 Linux 编程)书籍(免费 downloadable ),或更新的书籍。另见 syscalls(2)列表。你想要一些 inter-process communication .

您需要了解更多关于 sockets 的信息.参见 sockets(7) ;您可能会使用 Unix 套接字,请参阅 unix(7) (或使用 fifo(7)pipe(7) 等...),甚至是 TCP/IP 套接字,请参阅 tcp(7) (但要注意来自 Internet 的恶意连接)。您需要使用一些多路复用 system call ,例如 poll(2) .在简单的情况下,您的用户可以只使用 telnet连接到您的应用程序(注意,不涉及加密;因此您需要信任该连接,例如在某个内部 LAN 上)。

您可以决定在您的程序中添加一些网络界面(然后成为一个专门的网络服务器,例如提供一些 http://localhost:12345/ 和类似的 URL)。然后使用一些 HTTP server 库,例如 libonionlibhttp .当然,这需要熟悉 Web 技术( HTTPHTML5CSS ,也许是 JavaScriptAJAX )。然后您的用户将使用他/她的浏览器来查询您的应用程序的状态(或者可能与之交互),或者使用一些 HTTP 客户端命令,如 curl .我推荐这条路线,但它确实需要一些工作并熟悉 Web 技术。

您可能还对 libssh 感兴趣图书馆。

您可以决定您的应用程序成为一项服务,并将其连接到 systemd .

附言。在编码之前,您应该花几天时间阅读内容。

关于c - 如何使用可以远程连接的控制台创建 linux C 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53405943/

相关文章:

c - 如何使用 C 在 Ubuntu 上获取 WIFI 参数(带宽、延迟)

python - 向 Python 脚本发送消息

linux - 如何在 Linux 上安装 Git

C# Console.WriteLine 从哪里来

objective-c - 为控制台应用程序设置非常基本的单元测试时出现 "Undefined symbols for architecture x86_64"

C# 控制台获取 Windows 10 强调色

c - 为什么在写入使用字符串初始化的 "char *s"时会出现段错误,而不是 "char s[]"?

c - 这个定义语句是什么意思?

linux - 使用 sed 命令如何将 Linux 路径替换为 Windows 路径

c - 从 dirent 结构打印 off_t 文件大小