gpt4 book ai didi

c - 使用 system() 运行系统命令并发送输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:33 25 4
gpt4 key购买 nike

所以我想做的是用 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));

最佳答案

您应该只使用 popen() 而不是 system(),因为它在您链接的问题中有所描述。

您链接的问题中的 path 变量似乎命名错误。它包含系统调用的输出。如果您愿意,可以将其重命名为输出。

write() 获取您发送的缓冲区的长度。在这种情况下,这将是 output 的长度,而不是 buffer 的长度。

将所有这些放在一起给出以下内容:

char output[1035];
fp = popen(buffer, "r");
if(fp == NULL)
printf("Failed ot run command\n");

while(fgets(output, sizeof(output), fp) != NULL) {
write(socket_fd, output, strlen(output));
}
pclose(fp);

关于c - 使用 system() 运行系统命令并发送输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39799412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com