anonymous 5b151eab4f fix #2 %!s(int64=6) %!d(string=hai) anos
..
README.md 845272a4ce psnotify - process event notifications %!s(int64=12) %!d(string=hai) anos
psnotify.go a78543b15a Add sys package containing system call wrappers (#54) %!s(int64=8) %!d(string=hai) anos
psnotify_bsd.go 845272a4ce psnotify - process event notifications %!s(int64=12) %!d(string=hai) anos
psnotify_linux.go 5b151eab4f fix #2 %!s(int64=6) %!d(string=hai) anos
psnotify_test.go a78543b15a Add sys package containing system call wrappers (#54) %!s(int64=8) %!d(string=hai) anos

README.md

Process notifications for Go

Overview

The psnotify package captures process events from the kernel via kqueue on Darwin/BSD and the netlink connector on Linux.

The psnotify API is similar to the fsnotify package.

Example:

    watcher, err := psnotify.NewWatcher()
    if err != nil {
        log.Fatal(err)
    }

    // Process events
    go func() {
        for {
            select {
            case ev := <-watcher.Fork:
                log.Println("fork event:", ev)
            case ev := <-watcher.Exec:
                log.Println("exec event:", ev)
            case ev := <-watcher.Exit:
                log.Println("exit event:", ev)
            case err := <-watcher.Error:
                log.Println("error:", err)
            }
        }
    }()

    err = watcher.Watch(os.Getpid(), psnotify.PROC_EVENT_ALL)
    if err != nil {
        log.Fatal(err)
    }

    /* ... do stuff ... */
    watcher.Close()

Supported platforms

Currently targeting modern flavors of Darwin and Linux. Should work on BSD, but untested.

License

Apache 2.0