【发布时间】:2016-09-30 20:13:33
【问题描述】:
所以我要做的是使用system() 函数调用系统命令,然后无论其输出是什么,我都想将其发送给客户端(套接字连接)。
客户端可以发送各种消息。它可以是ls,但也可能是qwerty。我想将输出作为const void* buffer 参数放在write() 函数中。我见过this topic,但我可以完成它的工作。到目前为止,我认为它可以在这些线路中的某个地方运行,但无论我尝试过什么都行不通。
/* buffer is message from the client: ls, ls -l, whatever*/
system(buffer)
fp = popen(buffer, "r");
if(fp == NULL)
printf("Failed ot run command\n");
while(fgets(path, sizeof(path), fp) != NULL) {
//modify output here?
}
pclose(fp);
write(socket_fd, output, strlen(buffer));
【问题讨论】:
-
你在哪里打电话给
system()? -
@Code-Apprentice 正上方
-
似乎命令行中的命令也不会是文件名。
-
您启动该命令两次,一次是调用
system,一次是调用popen。这肯定不是你想做的。 -
@Code-Apprentice 除了我链接的主题之外,我找不到任何相关主题