1

これが私のプログラムです:

int main(int argc, char * argv[])
{
    pid_t child;
    int i=0;

    if( argc < 4 ){
        printf("Usage: %s <num_threads> <test_interval> <no_of_prints>\n", argv[0]);
        exit(1);
    }  

    // Some program logic goes here

    printf("context - switch \n\nPid\ttid\tNPid\tNtid\tJiffies\n\n");

    syscall(320);       

    child = fork();

    if(child == 0 ) { //in child
        fork();
        fork();
        process();
    }
    else    {
            wait(child);
            //Do some printing here 
    }

私の出力には、「コンテキストスイッチ」printf行が3つ(場合によっては2つ)印刷されています。

4

1 に答える 1

2

おそらくstdioバッファリングが原因です。一言で言えば、複数のプロセス(親、子、孫など)は同じバッファーで終わり、それらはすべて、死んだときに画面に書き込みます。試す:

printf("context - switch \n\nPid\ttid\tNPid\tNtid\tJiffies\n\n");
fflush(stdout);

または、write(2)の代わりに使用することもできprintfます。

于 2012-11-25T20:09:15.630 に答える