-p
фактически добавляет PID == pid
проверку в сгенерированный сценарий, где pid
является built in variable
, представляющим текущим идентификатор процесса и PID
этого значение -p
варианта.
Существует действие в DTrace называется progenyof
, который проверяет, что текущий процесс является ребенок (не обязательно прямой) процесса, так просто заменить эту проверку в opensnoop:
--- /usr/dtrace/DTT/opensnoop Wed Jun 25 01:34:47 2014
+++ opensnoop Fri Jan 13 17:43:41 2017
@@ -199,7 +199,7 @@
/* check each filter */
(OPT_name == 1 && NAME == execname) ? self->ok = 1 : 1;
- (OPT_pid == 1 && PID == pid) ? self->ok = 1 : 1;
+ (OPT_pid == 1 && progenyof(PID)) ? self->ok = 1 : 1;
/* OPT_file is checked on return to ensure pathp is mapped */
}
Спасибо, это решает мой случай использования , –