Hec*_*tor 13 c printf file-descriptor
这有点奇怪.我的代码没有输出我认为应该的东西.我在各个阶段添加了一些打印语句,以查看它出错的地方.依然没有.所以我在main的开头添加了一个printf语句.这就是我真的很困惑的地方.
所以我假设文件描述符发生了一些有趣的事情.我改成printf
了fprintf
.依然没有.打印到stderr fprintf
确实有效!为什么会这样?
除了初始打印语句之外,从main中删除所有主体并返回打印.
int main(void) {
fprintf(stdout, "STARTED!");
//Create an Internet domain socket
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
//If this fails exit and print the error
if (sockfd == -1) {
printf("Error %d, cannot create socket", errno);
return 1;
}
printf("SOCKET CREATED!");
//Creates a socket address
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(8080);
addr.sin_addr.s_addr = INADDR_ANY;
//Attempts to bind to the socket address, again prints to error if this fails.
if (bind(sockfd, (struct sockaddr *) &addr, sizeof(addr)) == -1)
{
printf("Error %d, cannot bind", errno);
return 1;
}
//Starts Listening for a client
if (listen(sockfd, 1) == -1)
{
printf("Error %d, cannot listen", errno);
return 1;
}
//If all is successful, server is operational
while(1)
{
//Creates a file descripter for the connection
int connfd;
//And a socket address for the client
struct sockaddr_in cliaddr;
socklen_t cliaddrlen = sizeof(cliaddr);
//If a connection attempt is made accepts it.
connfd = accept(sockfd, (struct sockaddr *) &cliaddr, &cliaddrlen);
if (connfd == -1) {
//If the connection fails print an error
printf("Error %d, cannot accept connection", errno);
continue;
}
//Otherwise process the request
else {
printf("CONNECTED!");
char end;
end = 1;
while (end)
{
process_request(connfd);
end = 0;
}
}
close(connfd);
}
close(sockfd);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
and*_*oke 27
输出通常由系统缓冲.您可以调用fflush,但有时,根据缓存的工作方式,只需使用换行符结束输出就足够了.所以尝试改变
fprintf(stdout, "STARTED!");
Run Code Online (Sandbox Code Playgroud)
至
fprintf(stdout, "STARTED!\n");
Run Code Online (Sandbox Code Playgroud)
并且,如果这没有帮助,那么
fprintf(stdout, "STARTED!\n");
fflush(stdout)
Run Code Online (Sandbox Code Playgroud)
(并且stderr通常不会被缓存,因为您希望立即看到错误.)
最后,您将在程序完成时看到输出(因为事情已被刷新),这可能解释了其余的行为.
归档时间: |
|
查看次数: |
52564 次 |
最近记录: |