-1
我在OS X上使用C ZeroMQ有一個奇怪的問題。我正在使用指南中的「C代碼中的多線程服務」代碼,並且我簡單地添加了一個對system("ls")
在worker_routine函數中調用sleep(1)
之後。這樣的功能看起來像這樣:使用ZeroMQ從線程中調用系統()使用ZeroMQ時的線程
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()是如何實現的? – jxh