C 文件描述符表-父/子共享它
我试图创建一个示例(帮助我理解以下概念): 子进程继承其父进程打开的文件。 可以在这个图中看到 这是我的代码:C 文件描述符表-父/子共享它,c,unix,posix,C,Unix,Posix,我试图创建一个示例(帮助我理解以下概念): 子进程继承其父进程打开的文件。 可以在这个图中看到 这是我的代码: FILE* f = fopen("test.txt", "r"); if(fork()==0){ printf("%c", fgetc(f) ); //should print e printf("%c", fgetc(f) ); //should print s printf("%c", fgetc(f) ); //should print t
FILE* f = fopen("test.txt", "r");
if(fork()==0){
printf("%c", fgetc(f) ); //should print e
printf("%c", fgetc(f) ); //should print s
printf("%c", fgetc(f) ); //should print t
printf("\n");
} else {
printf("%c", fgetc(f) ); // print t
}
test.txt包含单词test
假设父级先运行,如果父级和子级具有相同的描述符表,系统输出不应该t(来自父级)est(来自子级)
。当前输出为t▒▒▒▒代码>
谢谢
danielC stdio库使用缓冲来提高效率。即使您只读取一个字符,函数也会从文件中读取整个缓冲区。对于这样一个小文件,这意味着调度的进程首先会完全读取它
您可以通过调用setvbuf
禁用缓冲。或者,您可以使用直接在文件描述符上操作的函数(open
,read
)