C printf i fprintf (stdout,) nie są drukowane

To trochę dziwne. Mój kod nie wyświetlał tego, co myślałem, że powinien. Dodałem kilka instrukcji drukowania na różnych etapach, aby zobaczyć, gdzie się dzieje. Wciąż nic. Dodałem więc instrukcję printf na początku main. Tam naprawdę się pomieszałem.

Zakładałem więc, że dzieje się coś śmiesznego z deskryptorami plików. Zmieniłemprintf do afprintf. Wciąż nic. Drukowanie na stderr za pomocąfprintf działa! Dlaczego to się dzieje?

Usunięcie całego ciała z głównego, z wyjątkiem początkowej instrukcji drukowania, a powrót drukuje.

Kod
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;
}

questionAnswers(1)

yourAnswerToTheQuestion