ich über Art bin verwirrt, wie Datei Löcher auf Linux arbeiten:wie Datei Löcher in Linux arbeiten
int fd = open("/tmp/file1", O_RDWR | O_TRUNC);
write(fd, "bbbb", 4);
lseek(fd, SEEK_SET, 10000);
write(fd, "aaaa", 4);
lseek(fd, SEEK_SET, 50);
write(fd, "cccc", 4);
close(fd);
warum cat/tmp/file1
bbbbaaaacccc
produzieren? sollte es nicht bbbcccaaa sein? da aaaa bei einem Offset von 10000 geschrieben wird?
Update: Lseeks Rückkehr -1 mit EINVAL.
Sind Sie sicher, dass 'lseek' in allen Anrufen erfolgreich ist? Sie überprüfen seinen Ergebniscode nicht. –
es gibt EINVAL zurück, aber warum? –
Aus den Gründen in der man-Seite angegeben. –