gpt4 book ai didi

c - C服务器功能问题

转载 作者:行者123 更新时间:2023-11-30 19:24:26 26 4
gpt4 key购买 nike

您好,我的函数有问题,该函数负责客户端和服务器之间的联系:

#define MAX 1024


void connection(int sock)
{
char buffer[MAX];
int newsock;
int n;
int r;
if(write(sock,"Hello!\n", 6) < 0)
{
perror("Error: ");
}

do {
if(write(sock, "\n> ",3) < 0)
{
perror(" Error: ");
}
memset(buffer,'0',MAX); // fill buffer

n = read(sock,buffer,MAX -1 );
if (strncmp("get",buffer,3) == 0)
{
execl("/usr/bin/top","/usr/bin/top","-n 1");


}
else if (strncmp("quit",buffer,4) == 0)
{
write(sock, "Exit from program\n",17);
close(sock);
}

else
{
write(sock,"Wrong order!\n", 12);

}
}
while(n);
}

当客户端发送“get”时,程序应该从“top”顺序向他发送 View ,不幸的是它在我的程序中不起作用。

其次,请判断一下这段代码。这是我的第一个服务器程序。我将非常感激最后,如何更改功能以使客户可以在发送“获取”订单后在程序中执行操作。

问候,新年快乐!

最佳答案

您正在调用 exec 而没有调用 fork。因此,您将使用 top 的副本替换整个服务器进程。这确实不太可能达到您想要的效果。

很可能,您可以通过从/proc 文件系统打开一个合适的伪文件、读取信息并将其发送到您的套接字来实现您的目标。

如果你真的想使用top,你必须使用pipe、fork和exec(l)来运行top,从管道读取它的输出,然后将该输出发送到客户端。

我觉得你可能运行在一个服务器自动 fork 你的环境中(比如某种 CGI 网关),在这种情况下你的问题是你需要 fdopen 将套接字移动为描述符 # 1 在执行之前。如果您通过编辑您的问题来告诉我们有关您的环境的所有信息,那将会非常有帮助。

关于c - C服务器功能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1989901/

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