On Fri, Oct 12, 2018, 2:31 PM Ian Lance Taylor <i...@golang.org> wrote:
> On Thu, Oct 11, 2018 at 4:48 PM, Greg Saylor <greg.saylor....@gmail.com> > wrote: > > > > In other programming languages (this is specific to Linux/Unix systems), > in > > the past to ensure security in the even of a program crash, we would do > > something like: > > > > 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 > > > > I'm finding this very difficult to do in Go, as there does not seem to > be a > > way to do #4. And this is a very important consideration for this piece > of > > the system. > > > > For example, os.Rename takes filenames as the old/new filename. > > > > I figured looking in that code might reveal something lower level that > could > > be used, which lead me to syscal_linuxl.Rename() > > > > That lead me to syscall_linux.RenameAt() > > > > Which led me to zsyscall_linux_amd64.go. > > > > .. at this point I got pretty lost on how to do any of this. _AT_FDCWD > and > > fishing around in what appears to be some pretty low-level internals of > > Go... > > > > Is there some way to achieve this or a way that can ensure these files > are > > always removed if the program is kill -9'd, terminates from a panic, etc. > > Can you show us how you do this in C? > Probably linkat(2) ? http://man7.org/linux/man-pages/man2/linkat.2.html > I expect that will point toward how to do it in Go. > > Ian > > -- > 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. > -- 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.