【问题标题】:How to make a program that executes another C program multiple times at the same time?如何制作一个程序同时多次执行另一个 C 程序?
【发布时间】:2018-11-19 10:23:38
【问题描述】:

我使用套接字在 c 中制作了一个简单的客户端-服务器程序,现在我想通过模拟多个客户端同时连接到服务器来测试它!我编写了一个脚本来执行客户端:./client 20 次但它对我不起作用,因为它等待每个客户完成。

我还用c写了另一个程序,这次用线程,所以它可以用system(./client)执行每个客户端,然后分离线程,但我又遇到了同样的问题!

那么实现这个的正确方法是什么?

【问题讨论】:

  • 我想你的问题可以在这里得到解答:multithread server/client implementation in C
  • 你可能需要./client &(或者,要运行20,考虑for i in $(seq 1 20); do ./client &; done)在后台运行客户端。要编写一个 C 程序来完成这项工作,它(可能)会接受参数来说明要运行多少副本,以及要运行什么,并将 fork 并且子程序将执行指定的程序。
  • 要为多个客户端提供服务,您需要避免阻塞 I/O... 在实现多线程的服务器中,使用fork() 异步处理通信。
  • 您已指出您尝试过的两种不同的方法都行不通,但您并未准确展示您尝试过的方法。

标签: c linux bash sockets unix


【解决方案1】:

最简单的解决方案是编写你的 shell 脚本,但在 ./clientk 调用之后加上一个 &,这会将其置于后台并立即运行下一个命令

【讨论】:

    【解决方案2】:

    这是一种非常简单的方法,可以启动多个客户端,而无需等待每个客户端完成:

    #!/bin/bash
    
    for i in $(seq 0 20)
    do
        ./client &
    done
    
    wait
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      • 2011-01-15
      • 2010-11-05
      • 2015-12-24
      相关资源
      最近更新 更多