当前位置: 技术问答>linux和unix
<<unix/linux 编程实践教程>>程序问题
来源: 互联网 发布时间:2017-04-14
本文导语: //8.4.c #include #include main() { int fd; int pid; char msg1[]="Test 1 2 3 ..n"; char msg2[]="Hello, hellon"; if((fd=creat("testfile",0644))==-1) return 0; if(write(fd,msg1,strlen(msg1))==-1) return 0; if((pid=fork())==-1) return 0; if(write(fd,msg2,strlen(...
//8.4.c
#include
#include
main()
{
int fd;
int pid;
char msg1[]="Test 1 2 3 ..n";
char msg2[]="Hello, hellon";
if((fd=creat("testfile",0644))==-1)
return 0;
if(write(fd,msg1,strlen(msg1))==-1)
return 0;
if((pid=fork())==-1)
return 0;
if(write(fd,msg2,strlen(msg2))==-1)
return 0;
close(fd);
return 1;
}
//8.5.c
#include
main()
{
FILE *fp;
int pid;
char msg1[]="Test 1 2 3 ..n";
char msg2[]="Hello, hellon";
if((fp=fopen("testfile2","w"))==NULL)
return 0;
fprintf(fp,"%s",msg1);
if((pid=fork())==-1)
return 0;
fprintf(fp,"%s",msg2);
fclose(fp);
return 1;
}
其中8.4.c的文件中的输出为:
Test 1 2 3 ..
Hello, hello
Hello, hello
而8.5.c的文件中的输出为:
Test 1 2 3 ..
Hello, hello
Test 1 2 3 ..
Hello, hello
请教大神求解 谢谢
#include
#include
main()
{
int fd;
int pid;
char msg1[]="Test 1 2 3 ..n";
char msg2[]="Hello, hellon";
if((fd=creat("testfile",0644))==-1)
return 0;
if(write(fd,msg1,strlen(msg1))==-1)
return 0;
if((pid=fork())==-1)
return 0;
if(write(fd,msg2,strlen(msg2))==-1)
return 0;
close(fd);
return 1;
}
//8.5.c
#include
main()
{
FILE *fp;
int pid;
char msg1[]="Test 1 2 3 ..n";
char msg2[]="Hello, hellon";
if((fp=fopen("testfile2","w"))==NULL)
return 0;
fprintf(fp,"%s",msg1);
if((pid=fork())==-1)
return 0;
fprintf(fp,"%s",msg2);
fclose(fp);
return 1;
}
其中8.4.c的文件中的输出为:
Test 1 2 3 ..
Hello, hello
Hello, hello
而8.5.c的文件中的输出为:
Test 1 2 3 ..
Hello, hello
Test 1 2 3 ..
Hello, hello
请教大神求解 谢谢
|
write 不带缓存的系统调用,直接写入文件了
fprintf 带缓存,程序中没有fflush,子进程继承了缓存,就写入的一样了
fprintf 带缓存,程序中没有fflush,子进程继承了缓存,就写入的一样了