程序大体就是我要实现的telnet程序。
在客户端,用户发送其登录名和密码,如果正确,则开始向服务器发送命令
在服务器端,我检查系统上的用户身份验证,如果是真的,我必须运行存储在文件中的默认 shell passwd
,以执行他的命令。
问题是,当我尝试使用system
C 函数运行他的 shell 时,shell 会运行然后关闭,因为system()
使用fork()
和exec()
,并且在完成后为用户打开的 shell 被关闭。
如何在我的进程中运行新的 shell 并使其保持运行以执行以下命令?
答案1
答案2
您可能想从更简单的事情开始做这类事情,因为听起来您好像是新手。也许旧的talk / talkd
命令行程序和守护进程会更容易理解?一些有价值的资源包括 APUE(UNIX 环境中的高级编程)(Stevens)、UNP 或 UNIX 网络编程(同样由 Stevens 编写)和有效 TCP/IP 编程(Snader),让您更熟悉您将要从事的工作类型正在做的事情,特别是 TCP/IP。
答案3
你不能只使用system
.您必须自己fork
动手exec
并在两个方向使用管道。如果您想捕获 Ctrl 键输入,您还必须使用某种终端界面。