程序在第一个功能后取消

时间:2018-03-07 15:19:11

标签: go process

我的go代码出了问题。我将尝试构建一个脚本来自动更新并使用系统调用进行安装。

package main

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

func update() {
    binary, lookErr := exec.LookPath("apt")
    if lookErr != nil {
        panic(lookErr)
    }

    args := []string{"apt", "update"}

    env := os.Environ()

    execErr := syscall.Exec(binary, args, env)
    if execErr != nil {
        panic(execErr)
    }

}

func upgrade() {
    binary, lookErr := exec.LookPath("apt")
    if lookErr != nil {
        panic(lookErr)
    }

    args := []string{"apt", "upgrade", "-y"}

    env := os.Environ()

    execErr := syscall.Exec(binary, args, env)
    if execErr != nil {
        panic(execErr)
    }
}

func main() {
    update()
    upgrade()
}

代码只执行第一个update()函数。之后取消。没有错误或任何东西。我怎么能一步一步地做到这一点?

1 个答案:

答案 0 :(得分:1)

引用the manual

  

exec()系列函数用新的过程映像替换当前过程映像

(强调我的)。

要解决此问题,请使用os/exec中的函数并处理所有错误。