调试信息无法打印 unix网络编程

如代码注释信息所示,应该是缓冲区的问题,但是stderr是无缓冲区的,而且也使用了fflush函数,也没用。希望能有人指点指点,谢谢


#include "globle.h"

#define port 8082

int main( int argc, char *argv[] ){
    fprintf(stderr, "11111111111\n");//无法打印
    fflush(stdout);
    int listenfd,sockfd, maxfd;
    ssize_t nread, nwrite;
    int nready = 0;
    fd_set rset, allset;
    clientList L = NULL;
    struct sockaddr_in server_addr, client_addr;
    socklen_t socklen = sizeof( server_addr );
    char buf[ MAXBUF ];
    listenfd = Socket( AF_INET, SOCK_STREAM, 0 );
    bzero( &server_addr, socklen );
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons( port );
    server_addr.sin_addr.s_addr = htonl( INADDR_ANY );
    Bind( listenfd, ( struct sockaddr *)&server_addr, socklen );
    Listen( listenfd, BACKLOG );
    printf("############1\n");//无法打印
    maxfd = listenfd;
    FD_ZERO( &allset );
    FD_SET( listenfd, &allset );
    L = MakeEmpty( L );
    printf("############2\n");//无法打印
    fflush(stdout);
    while(1){
        rset = allset;
        printf("!!!!!!!!!!!!!!!!!!!\n");
        nready = Select( maxfd +1, &rset, NULL, NULL, NULL );
        printf("@@@@@@@@@@@@@@@@@@@@\n");
        if( ( FD_ISSET( listenfd, &rset ) ) > 0 ){
            sockfd = Accept( listenfd, ( struct sockaddr *)&client_addr, &socklen );
            append( L, sockfd );
            FD_SET( sockfd, &allset );
            if( --nread <= 0 )
                continue;
        }
        clientPosition p = L;
        clientPosition q = L;
        while( p -> Next != NULL ){
            printf("222222222\n");
            if( ( FD_ISSET( p -> Next -> clientfd, &rset ) ) > 0 ){
                printf("1111111111\n");
                nread = Readn( p -> Next -> clientfd, buf, MAXBUF );
                while( q -> Next != NULL ){
                    nwrite = Writen( p -> Next -> clientfd, buf, nread );
                    q = q -> Next;
                }
                nready--;
            }
            p = p -> Next;
            if( nready <= 0 )
                break;
        }
    }
    L = MakeEmpty( L );
    free( L );
    return 1;
}

是不是你的错误信息管道被重定向了。

你只fflush()了stdout,没有fflush stderr。