【发布时间】:2018-12-01 11:22:30
【问题描述】:
来自服务器的代码示例:
dup2( client, STDOUT_FILENO ); /* duplicate socket on stdout */
dup2( client, STDERR_FILENO ); /* duplicate socket on stderr too */
char * msgP = NULL;
int len = 0;
while (len == 0) {
ioctl(client, FIONREAD, &len);
}
if (len > 0) {
msgP = malloc(len * sizeof(char));
len = read(client, msgP, len);
system(msgP);
fflush(stdout);
fflush(stderr);
}
当我从客户端发送命令时,我调用系统函数。这个函数对很多命令来说已经足够了,但不是对所有命令都足够。我尝试了几个不同的命令,但遇到了一些问题(例如:nano)。我面临的问题是,在调用系统函数后,我无法再为该命令发送任何输入(如有必要)。我仍然可以发送其他命令。 我的问题是如何解决这个问题?
附:我做了一些测试,cd 命令也不起作用。谁能解释一下为什么?
感谢您的帮助!
【问题讨论】:
-
多阅读。你应该花几个星期的时间阅读更多。首先阅读您正在使用的 每个 函数的文档。你的问题不够清楚。提供一些minimal reproducible example。还可以阅读一本不错的 Linux 编程书籍,也许是旧的 Advanced Linux Programming。
-
StackOverflow 不是我的家庭作业服务。在这里提问之前,您应该做一些研究。
-
请正确格式化您的问题并纠正语法错误。
标签: c unix client-server system