【发布时间】:2015-01-28 19:04:36
【问题描述】:
我正在开发一个非常基本的客户端服务器通信服务,只是为了了解这个概念。 在服务器端,我有一个接受连接并让客户端与服务器通信的函数。每当连接的客户端向服务器发送消息时,它都会向客户端发送响应消息。 在客户端,我创建了一个线程来监听来自服务器的消息/响应。该线程只是运行一个循环,检查 read() 是否返回超过 0 个字节,如果是则打印消息。其他线程处理用户输入并向服务器发送消息。
现在问题: 我有几行代码可以监听来自服务器的消息
void readFromServer(int fileDescriptor)
{
int nOfBytes;
char buffer[512];
while(1){
nOfBytes = read(fileDescriptor, buffer, 512);
if(nOfBytes > 0)
printf("Server says: %s \n\n>", buffer);
}
}
这意味着当一条消息来自服务器时,我想这样表示它
>Serever says: Something
>|
但由于某种原因,我得到的是这个
>>Server says: Something
|
(| pipeline 表示控制台窗口中的光标)
有人知道这是为什么吗?这个问题有什么解决办法吗?
提前致谢。
编辑------------> fork() 是这样在 main 函数中完成的
int pid = fork();
if(pid != 0)
readFromServer(sock);
【问题讨论】:
-
抱歉,
fork()在哪里? -
在主函数中
标签: c multithreading unix fork