Для чого взагалі ця конструкція? А для того, щоб визначити аргументи з якими запускається програма. Це буває дуже корисно. Так от, є деякі нюанси та відмінності в роботі на різних ОС.
Ось простий приклад використання:
#!/usr/sbin/dtrace -s #pragma D option quiet proc:::exec-success { printf("%s", curpsinfo->pr_psargs); }
Solaris
Тут діє жорстке обмеження у 80 символів, включаючи і шлях до самої програми, яке описане у файлі sys/procfs.h
#define PRARGSZ 80 /* number of chars of arguments */ typedef struct psinfo { ... char pr_psargs[PRARGSZ]; / initial characters of arg list */ ... }
FreeBSD
А тут можна міняти це значення через sysctl параметр kern.ps_arg_cache_limit (за замовчуванням 256)