- 论坛徽章:
- 0
|
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<sys/types.h>
int main()
{
int i;
char buffer[10];
if(fork() == 0){
strcpy(buffer, "CHILD\n");
}
else{
strcpy(buffer, "PARENT\n");
}
for(i = 0; i < 5; i++){
sleep(1);
printf("%s",buffer);
//write(1, buffer, sizeof(buffer));
}
return 1;
}
1、书上写如果用printf的话(因为它是经过缓冲的),将会导致消息一次全部显示出来而不是相互交错的显示,但我用printf结果和write是相同的,这是为什么呢?
2、如果不用sleep(1),或者休眠的时间更短的话,将显示乱码。书上的解释是‘可以保证进程在一个时间片内完整的执行’,我不怎么明白!
最后一个问题就是,不明白‘%CHILD’是怎么显示出来的
请大伙帮忙看看,谢谢各位了! |
|