On Thu, Oct 11, 2018, at 18:48, Greg Saylor wrote: > 1. Create a temporary file and squirrel away the file handle > 2. Unlink the temporary file by name > 3. Various functions would write stuff to the file > 4. If the programs completes to some successful state, create a hardlink to > the file handle with the final filename
The golang.org/x/sys/unix [1] package gives you a lower level interface that might be familiar to you if you're used to using C. Something like this is probably similar to what you were doing (though you'll need /proc mounted, I'm not sure if there's a better way to do that): oldfd, err := unix.Open(".", unix.O_TMPFILE|unix.O_RDWR, unix.S_IRUSR|unix.S_IWUSR) if err != nil { panic(err) } f := os.NewFile(uintptr(oldfd), "myoldfile") _, err = f.Write([]byte("Hello, World")) if err != nil { panic(err) } dir, err := os.Open(".") if err != nil { panic(err) } procdir, err := os.Open("/proc/self/fd/") if err != nil { panic(err) } err = unix.Linkat(int(procdir.Fd()), strconv.Itoa(oldfd), int(dir.Fd()), "mynewfile", unix.AT_SYMLINK_FOLLOW) if err != nil { panic(err) } —Sam [1]: https://godoc.org/golang.org/x/sys/unix -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.