64得票11回答
Bash: 带有超时的等待

在Bash脚本中,我想要做类似于:app1 & pidApp1=$! app2 & pidApp2=$1 timeout 60 wait $pidApp1 $pidApp2 kill -9 $pidApp1 $pidApp2 即,在后台启动两个应用程序,并给它们 60 秒完成...

41得票2回答
waitpid、wnohang和wuntraced是UNIX系统编程中与进程管理相关的函数参数。 waitpid用于等待指定进程的结束,wnohang表示在没有子进程结束时立即返回,wuntraced表示不追踪已结束但尚未被处理的子进程。例如: ``` waitpid(pid, &status, WNOHANG|WUNTRACED) ``` 这个调用会等待pid指定的进程结束,如果该进程还没有结束,则立即返回0;并且不会追踪已结束但尚未被处理的子进程。

我有些困惑。据我所知,waitpid使用pid为-1的选项意味着我等待所有子进程结束,但如果我在waitpid中添加WNOHANG选项,则该选项表示如果没有任何子进程结束就立即退出……这似乎非常令人困惑。 我为什么要告诉计算机等待子进程完成然后立即告诉它如果没有任何子进程完成就立即退出呢? ...

36得票3回答
waitpid()的使用示例是什么?

我知道waitpid()函数是用来等待进程结束的,但是如何精确地使用它呢? 这里我的需求是创建两个子进程,等待第一个子进程退出后杀死第二个子进程,再退出。//Create two children pid_t child1; pid_t child2; child1 = fork(); /...

31得票1回答
等待3(waitpid的别名)在不应该返回-1并设定errno为ECHILD时却返回了。

上下文是这个Redis问题。我们有一个wait3()调用,等待AOF重写子进程在磁盘上创建新的AOF版本。当子进程完成后,父进程通过wait3()被通知以将旧的AOF替换为新的AOF。 但是,在上述问题的背景下,用户向我们报告了一个错误。我修改了Redis 3.0的实现,以便在wait3()返...

15得票5回答
为什么wait()会将状态设置为255而不是forked进程的-1退出状态?

我试图从子进程返回一个整数值。 然而,如果我使用 exit(1) ,则从 wait() 获得的输出为 256。使用 exit(-1) 则得到 65280。 有没有办法让我从子进程中获取实际发送的整数值?if(!(pid=fork())) { exit(1); } waitpid(pid...

11得票4回答
从Perl中获取子进程

我有一个脚本,它会生成一组子进程。父进程必须等待每个子进程完成。 我的脚本类似于以下perl脚本:#! /usr/bin/perl use strict; use warnings; print "I am the only process.\n"; my @children_pids; ...

10得票1回答
当OOM Killer杀死一个进程时的返回代码

我正在使用SUSE SLES 11操作系统在POWER7系统上运行一个基于SPEC CPU2006基准测试的多程序工作负载。 有时,工作负载中的每个应用程序都会消耗大量内存,而总内存占用量超过了系统安装的可用内存(32 GB)。 我禁用了交换空间,否则使用交换空间的进程可能会严重影响测量结果。...

10得票1回答
确定已终止进程的pid

我试图找出发送 SIGCHLD 信号的进程的 pid,我想在为 SIGCHLD 创建的信号处理程序中实现此操作。我正在尝试:int pid = waitpid(-1, NULL, WNOHANG); 因为我想等待任何被派生出来的子进程。

10得票2回答
使用waitpid在后台运行进程?

我正在尝试模仿bash特性,如果在命令的末尾找到"&",则在后台运行进程。 我有以下功能...我不认为它正在做我想要做的事情int execute(char* args[],int background,int *cstatus){ pid_t child; pid_t ...

9得票1回答
为什么waitpid不会等待进程退出?

在下面的脚本中,我正在尝试弄清楚waitpid是如何工作的,但它不等待ssh进程退出。 done立即打印,而不是在ssh进程存在后打印。 问题:如何使waitpid仅在我给出的pid已经退出时才继续执行? #!/usr/bin/perl use strict; use warnings; ...