外壳包装器句柄/执行交互式命令管道C++ UNIX

Shell Wrapper Handle / Execute Interactive Commands Pipes C++ UNIX

本文关键字:命令 管道 C++ UNIX 交互式 执行 包装 句柄 外壳      更新时间:2023-10-16

我的项目是用C/C++为我的家用Unix PC创建一个小的Remote Shell。它的组件是一个服务器,它通过套接字连接向客户端发送命令,该客户端执行命令并发送输出。

现在我想执行像"login"这样的命令来在客户端上验证自己。 有没有办法处理交互式命令,如"登录","python3" - Python3 Shell ???

我试图用 PIPES 处理这个问题,所以要管道((、fork(( 进程并捕获 {STDIN;标准输出;STDERR},但我无法与交互式命令交互,因为它们在完成之前会阻塞。 我只是设法执行"正常"命令,如"ls","arp -a","ifconfig"......

任何想法、网站、代码片段、建议???

感谢您的支持, 问候,来自大卫

您可以使用所谓的伪终端来执行此操作。便携式功能是posix_openpt

首先,对于 shell,您不需要服务器来处理命令和发送响应。

要执行命令: 首先,您必须检查该命令是内置命令还是 UNIX 命令。 如果它是一个 Unix 命令,你必须创建一个指向 dir 根二进制命令的路径(例如:python3 的路径是/usr/bin/python3(,之后你做一个分叉,在子进程中你可以使用 execve 来执行命令,在父进程中你做一个等待来捕获信号代码。 否则,如果命令是内置命令,则只需调用您创建的函数即可。 你可以去检查我的github帐户,我用C编码的2个shell,minishell1:https://github.com/la-montagne-epitech/Minishell1 和42Sh(更完整(