I have a daemon process running and that starts another process. To simulate it right now I have just put 'sleep'. If I kill the process, it remains as zombie. How to clean it properly.

cmd := exec.Command("sleep", "500")
err := cmd.Start()
if err != nil {
    log.Fatal(err)
}
if err := cmd.Process.Kill(); err != nil {
    log.Fatal("failed to kill process: ", err)
}
time.Sleep(10000000 * time.Millisecond)
$ ps aux | grep sleep

37342 0.0 0.0 4276984 1040 s000 S+ 5:09PM 0:00.00 grep sleep

37309 0.0 0.0 0 0 ?? Z 5:09PM 0:00.00 (sleep)