如何在通过命令行多次打开的同一文件中记录变量?

How do I record a variable in the same file that is open by command line multiple times?

提问人:Harvey Yeh 提问时间:10/12/2023 更新时间:10/12/2023 访问量:51

问:

我想实现一个只允许有限服务器连接的公告板。所以我使用 gcc 创建了一个文件 server.c,以及它的可执行文件服务器 .exe。我打开了两个命令行,两个命令行都连续输入./server。我的问题是,如何维护一个可以记录已连接多少台服务器的变量?我应该使用静态变量吗?还是我应该使用 extern 变量?或者如果有其他方法?

//server.c

static int num_server_connect;

num_server_connect+=1;

fprintf(stderr, "%d\n", num_server_connect);

我通过打开两个命令行来实现其可执行文件,尝试了上述代码。但他们俩都打印了 1。我期望第一个命令行可以显示 1,第二个命令行可以显示 2。如果第二个命令行离开,我再次实现第一个命令行,它可能会显示 1。

c 变量 unix

评论

1赞 0___________ 10/12/2023
您需要将其保存到文件中。
1赞 Retired Ninja 10/12/2023
您能解释一下“连接”在这种情况下的含义吗?您在哪个特定平台上运行它?进程之间的通信将取决于此。
0赞 Harvey Yeh 10/12/2023
@RetiredNinja 我正在使用 select() 或 accept() 函数来接收来自客户端的连接。我在本地主机上做这个实验。我在 Windows 系统中的 wsl 上运行。所以我的实验场景是我会有client.c和server.c文件,我会打开许多wsl来实现./server,使用不同的端口像多服务器一样。但是,可以连接到公告板的服务器数量是最大数量的。这就是为什么我想知道如何维护一个变量,该变量可以让我们知道有多少现有服务器是开放的。
4赞 John Bollinger 10/12/2023
虽然“服务器”可以用来表示一类机器,但它也可以用来表示机器或程序,其作用是接受连接并向连接的机器提供服务。我不清楚你对“服务器”这个词的各种用法应该是什么意思。特别是“服务器连接”是一对奇怪的同床异梦。根据第一种近似值,服务器不会连接到其他机器,而是其他机器连接到它们
2赞 Craig Estey 10/12/2023
除了 John 的评论之外,您可能还想重新构建工作方式。您可能需要一个真正的网络服务器。一个这样做的.将单个实例作为守护程序启动。它将[轻松]跟踪连接数量。然后,客户端执行:到该服务器。服务器可以计算和限制连接数。通常,客户端不会分离服务器实例。但是,如果两个程序尝试启动服务器的单独实例,它会使用文件锁(例如)来确保一次只运行一台服务器。socket/bind/listen/acceptsocket/connectfork/execflock

答: 暂无答案