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

Reply via email to