我正在编写一个Bash脚本来监视一个进程,并检测它何时崩溃。为此,我正在监视/proc目录;
start_my_process;
my_process_id=$!;
until [[ ! -d "/proc/$my_process_pid" ]]; do
# alert the process is dead and restart it...
done
是否可以保证在Bash完成执行启动进程的命令之前创建/proc/中的进程条目?或者,在执行上面的检查时,是否可能还没有创建start_my_process的条目?
编辑:最后,我实际上违背了一个自定义解决方案,选择了mo
我需要帮助解决一个问题。我有两个进程在运行,一个是看门狗,另一个是简单的测试过程。我需要进程2从看门狗调用代码,我这样做的原因是为了减少进程2的大小。例如,进程2必须从看门狗调用一个名为"IsSafe“的函数。IsSafe函数依赖于属于看门狗进程的其他代码,因此为进程2重写此代码是不可行的。我想过一些想法,请您给出最好的解决方案并给出建议。
Idea One
使用命名管道在进程之间进行通信,并传递参数和返回值。
Idea 2
使用共享内存共享参数和返回值
Idea三
使用windows消息,老实说我认为这是行不通的。
Idea四
以某种方式创建共享内存的可执行部分,并使用far jmp
这不是关于终止一个系统进程,而是杀死“我自己”。我有几个并行的theads,它们可能因为不同的原因而挂起。
当线程耗时太长时,我已经创建了一个看门狗:
TimerCallback timerDelegate = new TimerCallback(CheckProcessStatus);
System.Threading.Timer watchDogTimer = new Timer(timerDelegate, new ProcessHealth(plog), 1000 * 60, 1000 * 60);
try
{
// lots of code here
} final