diff --git a/src/os/file_unix.go b/src/os/file_unix.go
index 3d3a8b2056b793bd7ddf3e1d9cbf3eb0ca584693..b8c27d8826a834dd9435916dccba9861b9c5e812 100644
--- a/src/os/file_unix.go
+++ b/src/os/file_unix.go
@@ -106,7 +106,11 @@ func NewFile(fd uintptr, name string) *File {
 	if nb, err := unix.IsNonblock(int(fd)); err == nil && nb {
 		kind = kindNonBlock
 	}
-	return newFile(fd, name, kind)
+	f := newFile(fd, name, kind)
+	if flags, err := unix.Fcntl(int(fd), syscall.F_GETFL, 0); err == nil {
+		f.appendMode = flags&syscall.O_APPEND != 0
+	}
+	return f
 }
 
 // newFileKind describes the kind of file to newFile.