1

我有一个 C 程序,通过 tcp 套接字向对等进程发送命令。收到此命令后,对等进程将开始执行请求的命令。但是,这需要很长时间,我不希望 tcp 套接字等待很长时间才能返回值。我认为,fork 一个进程将帮助我做到这一点。但是,我想要一些其他的方法来解决这个问题。请分享您与此相关的想法和经验。请帮忙。提前致谢,

4

3 回答 3

0

UNIX 中有多种形式的进程间通信 (IPC) 策略。我最喜欢的一个是产生一个子进程并在其消亡时收到通知。IPC 入门可以在这里找到,异步等待子进程死亡的示例可以在这里找到。如果您不想生成单独的进程,则可以使用命名管道在两个进程之间来回传递信息。

于 2013-07-06T09:42:49.073 回答
0

我不清楚你的意思。你说你想在知道结果之前给出答案,或者可能是,返回值不依赖于过程本身。在事务通信方面,有两种方法,“同步”和“异步”事务。前者等待服务器完成de进程并给出结果,第二个将发送请求并获取令牌,关闭套接字,稍后它将使用该令牌请求结果。因此,您可以做的是给被请求的对等方一个令牌,一旦该过程完成,它就可以在其中询问答案。请注意,您可能会给出表示“进程仍在运行,稍后再试”的答案。在您的服务器代码中,您需要对这个场景进行编程,给每个进程一个编号,用该编号保存结果,并且,请求时,使用该号码发送结果。如果这不合适,请更详细地解释您要完成的工作。

于 2013-07-06T19:08:04.533 回答
0

您可以使用一个线程并等待它,直到回复到来。pthread 和 wait 就可以了(虽然线程是轻量级进程)。

如果你真的想通过从不产生一个进程来做到这一点,你将不得不在收到 TCP 回复时求助于回调之类的东西,这可能可以从 TCP 包装器库中获得,但包括类似这样的东西或制作类似的东西不'如果您不等待大量回复,则没有任何意义。对于一些回复等待线程很好。

于 2013-07-06T10:41:50.053 回答