由叉产生的过程我写代码并发服务器。我希望看到在fork()
调用生成的子服务器套接字的终端输出。客户端正在与子服务器套接字进行通信,我希望看到客户端在服务器上写入的数据。那我怎么能在终端上看到它?如何查看在终端输出()
我的服务器代码:
while(1)
{
clilen=sizeof(cliaddr);
connfd=accept(sockfd,(struct sockaddr*)&cliaddr,&clilen);
printf("connection accepted\n");
if((childpid=fork())==0)
{
close(sockfd);
printf("child process\n");
str_echo(connfd);
// str_echo(connfd);
exit(0);
}
printf("connection established\n");
str_echo()
void str_echo(int sockfd)
{
char buff[20];
ssize_t n;
while(1)
{
if((n=read(sockfd,buff,20))>=0)
write(sockfd,buff,20);
else
write(sockfd,"blank",20);
//else
printf("%s",buff);
// write(sockfd,buff,20);
//return;
//else
// writen(sockfd,buff,n);
}
}
,但我没有在终端
也许问题是,'阅读()'还没有恢复?你可以尝试在'str_echo'的开头加上'print',看看你是否看到了。 – Owen
父进程的stdout是否重定向?你能不能在fork,printf,exit和wait之类的代码中重现这个问题? –