diff --git a/internal/pwru/output.go b/internal/pwru/output.go index f172e357..a61035ad 100644 --- a/internal/pwru/output.go +++ b/internal/pwru/output.go @@ -7,7 +7,6 @@ package pwru import ( "errors" "fmt" - "io" "log" "net" "os" @@ -36,7 +35,7 @@ type output struct { printSkbMap *ebpf.Map printStackMap *ebpf.Map addr2name Addr2Name - writer io.Writer + writer *os.File kprobeMulti bool kfreeReasons map[uint64]string ifaceCache map[uint64]map[uint32]string @@ -81,6 +80,13 @@ func NewOutput(flags *Flags, printSkbMap *ebpf.Map, printStackMap *ebpf.Map, }, nil } +func (o *output) Close() { + if o.writer != os.Stdout { + _ = o.writer.Sync() + _ = o.writer.Close() + } +} + func (o *output) PrintHeader() { if o.flags.OutputTS == "absolute" { fmt.Fprintf(o.writer, "%12s ", "TIME") diff --git a/main.go b/main.go index aa981b09..aff0021f 100644 --- a/main.go +++ b/main.go @@ -315,6 +315,7 @@ func main() { if err != nil { log.Fatalf("Failed to create outputer: %s", err) } + defer output.Close() output.PrintHeader() defer func() {