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

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

如何在golang中收聽fifo等待fifo文件的輸出

如何在golang中收聽fifo等待fifo文件的輸出

Go
繁星淼淼 2022-10-10 19:40:15
我將運(yùn)行一個(gè)將輸出推送到文件系統(tǒng)中的 FIFO 文件的命令。在 bash 中,我可以寫timeout 3000 cat server_fifo>server.url等到 fifo 被推送一個(gè)輸出,或者它達(dá)到 3000 超時(shí)。我想知道我們?nèi)绾卧?golang 中做到這一點(diǎn),即一直等待 fifo 文件的輸出,并為此等待設(shè)置超時(shí)。根據(jù) matishsiao 的 gist 腳本,我知道我們可以做到    file, err := os.OpenFile(urlFileName, os.O_CREATE, os.ModeNamedPipe)    if err != nil {        log.Fatal("Open named pipe file error:", err)    }    reader := bufio.NewReader(file)    for {        _, err := reader.ReadBytes('\n')        if err == nil {            fmt.Println("cockroach server started")            break        }    }但是在這種情況下,如何在 for 循環(huán)中添加超時(shí)?
查看完整描述

1 回答

?
慕容3067478

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

這是您可以使用的簡(jiǎn)單樣板:


finished := make(chan bool)

go func() {

    /*

     * Place your code here

     */

    finished <- true

}()

select {

case <-time.After(timeout):

    fmt.Println("Timed out")

case <-finished:

    fmt.Println("Successfully executed")

}

分配time.Second*3或任何Duration變量timeout。


編輯:添加帶有回調(diào)的示例函數(shù):


func timeoutMyFunc(timeout time.Duration, myFunc func()) bool {

    finished := make(chan bool)

    go func() {

        myFunc()

        finished <- true

    }()

    select {

    case <-time.After(timeout):

        return false

    case <-finished:

        return true

    }

}


func main() {

    success := timeoutMyFunc(3*time.Second, func() {

        /*

         * Place your code here

         */

    })

}這是您可以使用的簡(jiǎn)單樣板:


finished := make(chan bool)

go func() {

    /*

     * Place your code here

     */

    finished <- true

}()

select {

case <-time.After(timeout):

    fmt.Println("Timed out")

case <-finished:

    fmt.Println("Successfully executed")

}

分配time.Second*3或任何Duration變量timeout。


編輯:添加帶有回調(diào)的示例函數(shù):


func timeoutMyFunc(timeout time.Duration, myFunc func()) bool {

    finished := make(chan bool)

    go func() {

        myFunc()

        finished <- true

    }()

    select {

    case <-time.After(timeout):

        return false

    case <-finished:

        return true

    }

}


func main() {

    success := timeoutMyFunc(3*time.Second, func() {

        /*

         * Place your code here

         */

    })

}


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

添加回答

舉報(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)