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

从函数返回值,而不退出C中的函数,c,sockets,C,Sockets,我有一个C程序,通过tcp套接字向对等进程发送命令。 收到此命令后,对等进程将开始执行请求的命令。但是,这需要很长时间,我不希望tcp套接字等待很长时间才能返回值。我认为,一个过程将帮助我做到这一点。但是,我想用其他方法来解决这个问题。请分享你的想法和经验。请帮忙。提前感谢,UNIX中有多种形式的进程间通信(IPC)策略。我最喜欢的方法之一是生成一个子进程,并在其终止时接收通知。可以找到IPC的入门知识,也可以找到异步等待子进程死亡的示例。如果你不想产生一个单独的进程,你可以用它来让信息在两个进

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

UNIX中有多种形式的进程间通信(IPC)策略。我最喜欢的方法之一是生成一个子进程,并在其终止时接收通知。可以找到IPC的入门知识,也可以找到异步等待子进程死亡的示例。如果你不想产生一个单独的进程,你可以用它来让信息在两个进程之间来回流动

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


如果您真的不想生成进程来实现这一点,那么在收到TCP回复时,您必须求助于回调之类的方法,这可能可以从TCP包装器库中获得,但如果您不等待大量回复,那么包括这样的方法或做出这样的方法是没有意义的。等待几个回复线程就可以了。

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

我不想产生一个过程。有没有其他方法可以实现目标。命名管道也可以使用。。。系统V消息队列。。。是的,有一百万种方法可以剥除这只猫的皮。在等待返回值时,您想做什么?一旦命令成功发送并收到对等进程的确认,我想关闭此连接,但不想等待对等进程执行命令并返回值。您不能先关闭连接,然后运行long命令吗?如果您只是关闭连接,会发生什么情况?对等进程是您编写的还是外部程序玩具无法控制?@Kninnug:非常感谢。这是一个可笑的好主意,而且很管用。