Shell 包装句柄/执行交互式命令管道 C++ UNIX
Shell Wrapper Handle / Execute Interactive Commands Pipes C++ UNIX
我的项目是用 C/C++ 为我的家庭 Unix PC 创建一个小远程 Shell。它的组件是一个服务器,它通过套接字连接向客户端发送命令,客户端执行命令并发送输出。
现在我想执行像“登录”这样的命令来在客户端上验证我自己。
有什么方法可以处理交互式命令,如“登录”、“python3” - Python3 Shell ???
我已经尝试用 PIPES 来处理这个问题,所以要 pipe(),fork() 进程并捕获 {STDIN;标准输出; STDERR},但我无法与交互式命令交互,因为它们会阻塞直到完成。
我刚刚设法执行“正常”命令,如“ls”、“arp -a”、“ifconfig”...。
任何想法、网站、代码片段、建议 ???
感谢您的支持,
此致,大卫
您可以使用所谓的伪终端来执行此操作。可移植函数是 posix_openpt
首先,对于 shell,您不需要服务器来处理命令和发送响应。
执行命令:
首先,您必须检查该命令是内置命令还是 UNIX 命令。
如果它是一个 Unix 命令,你必须创建一个到 dir root 二进制命令的路径(例如:python3 的路径是 /usr/bin/python3),之后你做一个 fork,在子进程中你可以使用 execve 执行命令,并在父进程中等待捕获信号代码。
否则,如果该命令是内置命令,则您只需调用您创建的函数。
你可以去查看我的 github 帐户,那里有 2 个 shell 我用 C 编写的,, minishell1 : https://github.com/la-montagne-epitech/Minishell1 和 42Sh(更完整)
我的项目是用 C/C++ 为我的家庭 Unix PC 创建一个小远程 Shell。它的组件是一个服务器,它通过套接字连接向客户端发送命令,客户端执行命令并发送输出。
现在我想执行像“登录”这样的命令来在客户端上验证我自己。 有什么方法可以处理交互式命令,如“登录”、“python3” - Python3 Shell ???
我已经尝试用 PIPES 来处理这个问题,所以要 pipe(),fork() 进程并捕获 {STDIN;标准输出; STDERR},但我无法与交互式命令交互,因为它们会阻塞直到完成。 我刚刚设法执行“正常”命令,如“ls”、“arp -a”、“ifconfig”...。
任何想法、网站、代码片段、建议 ???
感谢您的支持, 此致,大卫
您可以使用所谓的伪终端来执行此操作。可移植函数是 posix_openpt
首先,对于 shell,您不需要服务器来处理命令和发送响应。
执行命令: 首先,您必须检查该命令是内置命令还是 UNIX 命令。 如果它是一个 Unix 命令,你必须创建一个到 dir root 二进制命令的路径(例如:python3 的路径是 /usr/bin/python3),之后你做一个 fork,在子进程中你可以使用 execve 执行命令,并在父进程中等待捕获信号代码。 否则,如果该命令是内置命令,则您只需调用您创建的函数。 你可以去查看我的 github 帐户,那里有 2 个 shell 我用 C 编写的,, minishell1 : https://github.com/la-montagne-epitech/Minishell1 和 42Sh(更完整)