Exec Process

Examples in Go
Calling exec completely replaces the current Go process with another (perhaps non-Go) one.
package main

import (
    "os"
    "os/exec"
    "syscall"
)

func main() {

    // For our example we’ll exec ls. Go requires an absolute path to the binary we want to execute,
    // so we’ll use exec.LookPath to find it (probably /bin/ls).
    binary, lookErr := exec.LookPath("ls")
    if lookErr != nil {
        panic(lookErr)
    }

    // Exec requires arguments in slice form (as apposed to one big string).
    // We’ll give ls a few common arguments.
    // Note that the first argument should be the program name.
    args := []string{"ls", "-a", "-l", "-h"}

    // Exec also needs a set of environment variables to use.
    // Here we just provide our current environment.
    env := os.Environ()

    // Here’s the actual syscall.Exec call.
    // If this call is successful, the execution of our process will end here and be replaced by the /bin/ls -a -l -h process.
    // If there is an error we’ll get a return value.
    execErr := syscall.Exec(binary, args, env)
    if execErr != nil {
        panic(execErr)
    }
}
Last Run  :
total 12K
drwx------ 2 runner runner 4.0K Aug 24 17:09 .
drwxrwxrwt 1 root   root   4.0K Aug 24 17:09 ..
-rw-r--r-- 1 runner runner 1.1K Aug 24 17:09 main.go