从函数返回一个值而不退出C中的函数

时间:2013-07-06 09:29:21

标签: c sockets

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

3 个答案:

答案 0 :(得分:0)

UNIX中有许多形式的进程间通信(IPC)策略。我最喜欢的一个是产生子进程并在其终止时收到通知。可以找到关于IPC的入门here,并且可以找到异步等待子进程死亡的示例here。如果您不想生成单独的进程,可以使用named pipes让信息在两个进程之间来回流动。

答案 1 :(得分:0)

您可以使用线程并等待它直到回复。 pthread和wait会做得很好(虽然线程是轻量级的进程)。

如果你真的想通过永远不会产生进程来做到这一点,那么当收到TCP回复时你将不得不采取类似回调的东西,这可能来自TCP包装器库,但是包括类似的东西或做类似的东西如果你没有等待很多回复,那就没有意义了。对于一些回复等待线程很好。

答案 2 :(得分:0)

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