C언어

multi process read

고요한하늘... 2013. 8. 8. 13:25

fork로 여러개의 process를 실행시키고 각각의 프로세스에서

stdin으로 문자열을 입력받을때

어느 process로 입력될지는 알수 없지만

하나의 프로세스에 하나의 입력이 보장되는지를 확인하기 위해서

다음과 같은 테스트를 했다.

 

결과는 보장되지 않는다....

출력 결과를 예측할수 없고,

이런식의 프로그램을 하면 안될것 같다.

 

 

int main( int argc, char * argv[] )
{
        int child_id, n, i;
        char buffer;

        int child_max = atoi(argv[1]);

        for( i = 0; i < child_max; i++ )
        {
                fprintf( stderr, "[%d]forking..\n", i);
                if(( child_id = fork()) == 0 )
                {
                        while( (n = read( 0, &buffer, 1 )) > 0 )
                        {
                                printf("%c", buffer );
                        }
                        exit(0);

                }
        }
        wait(NULL);

        return 0;
}

 

* fgetc로 했을때도 마찬가지결과였다.