相关疑难解决方法(0)

等待"任何过程"完成

bash中是否有任何内置功能可以等待任何进程完成?该wait命令仅允许等待子进程完成.我想知道在继续执行任何脚本之前是否有任何方法可以等待任何进程完成.

这样做的机械方法如下,但我想知道bash中是否有任何内置功能.

while ps -p `cat $PID_FILE` > /dev/null; do sleep 1; done
Run Code Online (Sandbox Code Playgroud)

bash scripting process wait

133
推荐指数
9
解决办法
14万
查看次数

如何正确等待事件/流程完成不是父母?

我正在使用GO检查一个进程(不是父进程)是否已经终止,基本上类似于FreeBSD中pwait命令但是用go编写.

目前,我尝试了for loop一个kill -0,但我注意到,CPU的使用率是非常高的99%,使用这种方法,这里是代码:

package main

import (
    "fmt"
    "os"
    "strconv"
    "syscall"
    "time"
)

func main() {

    if len(os.Args) != 2 {
        fmt.Printf("usage: %s pid", os.Args[0])
        os.Exit(1)
    }

    pid, err := strconv.ParseInt(os.Args[1], 10, 64)
    if err != nil {
        panic(err)
    }

    process, err := os.FindProcess(int(pid))

    err = process.Signal(syscall.Signal(0))
    for err == nil {
        err = process.Signal(syscall.Signal(0))
        time.Sleep(500 * time.Millisecond) 
    }
    fmt.Println(err)
}
Run Code Online (Sandbox Code Playgroud)

知道如何改进或正确实现这一点.

提前致谢.

UPDATE

sleep像建议的那样在循环内添加,有助于减少负载.

从提供的链接,似乎可以附加到现有的pid,我会尝试 …

linux freebsd go kqueue

9
推荐指数
1
解决办法
724
查看次数

如果X不是子进程,如何等待PID X退出?

使用c当我不是当前进程的子进程时,如何等待PID X退出?

Kill(pid, SIGTERM);
waitpid(pid,NULL,0);
Run Code Online (Sandbox Code Playgroud)

以上不起作用,因为'pid'不是子进程.

c linux

8
推荐指数
2
解决办法
2443
查看次数

等待程序(非子程序)完成并执行命令

我在远程计算机上运行了一个不应停止的程序。我需要跟踪该程序何时停止并立即执行命令。PID 是已知的。我怎样才能做到这一点?

linux bash

1
推荐指数
1
解决办法
144
查看次数

标签 统计

linux ×3

bash ×2

c ×1

freebsd ×1

go ×1

kqueue ×1

process ×1

scripting ×1

wait ×1