【发布时间】:2013-07-20 00:47:12
【问题描述】:
我在 OS X 上使用 C ZeroMQ 时遇到了一个奇怪的问题。我正在使用指南中的“C 中的多线程服务”代码,并且我只是在worker_routine 函数。所以这个函数看起来像这样:
static void *
worker_routine (void *context) {
// Socket to talk to dispatcher
void *receiver = zmq_socket (context, ZMQ_REP);
zmq_connect (receiver, "inproc://workers");
while (1) {
char *string = s_recv (receiver);
printf ("Received request: [%s]\n", string);
free (string);
// Do some 'work'
sleep (1);
system("ls");
// Send reply back to client
s_send (receiver, "World");
}
zmq_close (receiver);
return NULL;
}
当我使用指南中的示例客户端连接到此服务器时,ls 运行但 s_send 失败并出现 NOENT 错误并且不再处理请求。如果我删除 system("ls") 调用一切正常。
有人知道会发生什么吗?
谢谢, 史蒂夫
【问题讨论】:
-
s_send()是如何实现的?