这是我的计划:
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
}
我的输出有3张(有时是2张)“context - switch”printf
行的打印件。
答案 0 :(得分:2)
这可能是因为stdio
缓冲。简而言之,多个进程(父进程,子进程,子进程等)以相同的缓冲区结束,并且当它们死亡时它们都将其写入屏幕。尝试:
printf("context - switch \n\nPid\ttid\tNPid\tNtid\tJiffies\n\n");
fflush(stdout);
或者只是使用write(2)
代替printf
。