Я написал этот фрагмент, чтобы записать некоторые данные в некоторый файл:
//CODE 1
int retval=open("hello.txt",O_WRONLY|O_CREAT|S_IRUSR);
int len=6;
if(retval<0)
{
printf("wrong\n");
}
else
printf("abcd %ld",write(retval,"hello",len));
Теперь я заметил, что abcd
из printf
также записывается в файл, если я увеличиваю значениеlen
(скажем, len=9
):
//CODE 2 with value of len=9
int retval;
while((retval=getchar())!=EOF)
{
if(retval!='\0')
printf("%c",retval);
else
{
printf("\n\nfound null-termination\n\n");
}
}
вывод для второго кода:
//value of len is 9 in this case
hello
found null-termination
abc
Теперь я не могу понять, как abcd
из printf
также вставляется в файл - это потому, что данные в printf
не ждут, пока данные в исходящем потоке будут сброшены в файл (сначала вставляется write()
), следовательно, оба файла записываются в файл