第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么此代碼在運(yùn)行命令時(shí)出錯(cuò) error="exec: not started"`?

為什么此代碼在運(yùn)行命令時(shí)出錯(cuò) error="exec: not started"`?

Go
吃雞游戲 2023-02-14 17:37:45
這是我的代碼(writeFromProcessToFileWithMax是一個(gè)內(nèi)部函數(shù),并且工作正常):    // Go routines for non-blocking reading of stdout and stderr and writing to files    g := new(errgroup.Group)    // Read stdout in goroutine.    g.Go(func() error {        err = writeFromProcessToFileWithMax(stdoutScanner, stdoutFileWriter, maxStdoutFileLengthInGB)        if err != nil {            log.Error().Err(err).Msgf("Error writing to stdout file: %s", stdoutFilename)            return err        }        return nil    })    // Read stderr in goroutine.    g.Go(func() error {        err = writeFromProcessToFileWithMax(stderrScanner, stderrFileWriter, maxStderrFileLengthInGB)        if err != nil {            log.Error().Err(err).Msgf("Error writing to stderr file: %s", stderrFilename)            return err        }        return nil    })    // Wait the command in a goroutine.    g.Go(func() error {        return cmd.Wait()    })    // Starting the command    if err = cmd.Start(); err != nil {        log.Error().Err(err).Msg("Error starting command")        return err    }    // Waiting until errorGroups groups are done    if err = g.Wait(); err != nil {        log.Error().Err(err).Msg("Error during running of the command")    }當(dāng)我運(yùn)行它時(shí),我得到以下 Error = Error during running of the command error="exec: not started"。但一切正常。它會(huì)回來(lái)咬我還是我應(yīng)該壓制?
查看完整描述

1 回答

?
一只萌萌小番薯

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊

cmd在你開始之前你正在等待。在您的舊代碼中的大部分時(shí)間cmd.Wait()之前都會(huì)被調(diào)用。(無(wú)法保證兩個(gè)不同的 goroutine 中的事情何時(shí)發(fā)生,除非您明確使用同步點(diǎn))cmd.Start()


交換goroutine的順序cmd.Start()和內(nèi)部:cmd.Wait()


// Starting the command

if err = cmd.Start(); err != nil {

    log.Error().Err(err).Msg("Error starting command")

    return err

}


// Wait the command in a goroutine.

g.Go(func() error {

    return cmd.Wait()

})

當(dāng)您啟動(dòng)在啟動(dòng)命令后等待的 goroutine 時(shí),您可以保證以cmd.Start()正確cmd.Wait()的順序執(zhí)行。


至于為什么它似乎有效:g.Wait()阻塞直到 Go 方法的所有函數(shù)調(diào)用都返回,然后從它們返回第一個(gè)非零錯(cuò)誤(如果有的話)。 ”


所以所有的 go 例程都完成了,包括復(fù)制輸出的例程,然后您會(huì)看到執(zhí)行cmd.Wait().


查看完整回答
反對(duì) 回復(fù) 2023-02-14
  • 1 回答
  • 0 關(guān)注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)