On Fri, Nov 17, 2000 at 12:32:33AM -0500, barries wrote:
> On Fri, Nov 17, 2000 at 03:51:35PM +1100, Steve Smith wrote:
> >
> > seek $f, 0, 0;
> ^^^^
>
> Had a look in Apache::File (below), and it sysopens, so you might want
> to sysseek(...) instead.
No, nevermind, don't: sysseek won't flush the buffer:
strace perl -we 'use Fcntl ; sysopen F, "foo", O_RDWR | O_CREAT or die $! ; print F
"hi1\n" ; sysseek F, 0, 0 ; sleep 5 ; print F "hi2\n" ; close F'
open("foo", O_RDWR|O_CREAT|0x8000, 0666) = 3
fcntl(3, F_GETFL) = 0x8002 (flags O_RDWR|0x8000)
fstat(3, {st_mode=S_IFCHR|S_ISUID|S_ISGID|0463, st_rdev=makedev(79, 18), ...}) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
_llseek(0x3, 0, 0, 0xbffff66c, 0x1) = 0
fstat(3, {st_mode=S_IFCHR|S_ISUID|S_ISGID|0463, st_rdev=makedev(79, 18), ...}) = 0
fcntl(3, F_SETFD, FD_CLOEXEC) = 0
_llseek(0x3, 0, 0, 0xbffff8f8, 0) = 0
time([974439311]) = 974439311
SYS_175(0, 0xbffff8c0, 0xbffff840, 0x8, 0) = 0
SYS_174(0x11, 0, 0xbffff644, 0x8, 0x11) = 0
SYS_175(0x2, 0xbffff840, 0, 0x8, 0x2) = 0
nanosleep(0xbffff7ac, 0xbffff7ac, 0x401791b4, 0xbffff7ac, 0xbffff8c0) = 0
time([974439316]) = 974439316
write(3, "hi1\nhi2\n", 8) = 8
close(3) = 0