有没有办法计算 shell 脚本在执行时执行的分叉数?我一直在寻找可能使用getrusage(2)
和分析的各个领域编写 C 包装器
struct rusage {
struct timeval ru_utime; /* user time used */
struct timeval ru_stime; /* system time used */
long ru_maxrss; /* max resident set size */
long ru_ixrss; /* integral shared text memory size */
long ru_idrss; /* integral unshared data size */
long ru_isrss; /* integral unshared stack size */
long ru_minflt; /* page reclaims */
long ru_majflt; /* page faults */
long ru_nswap; /* swaps */
long ru_inblock; /* block input operations */
long ru_oublock; /* block output operations */
long ru_msgsnd; /* messages sent */
long ru_msgrcv; /* messages received */
long ru_nsignals; /* signals received */
long ru_nvcsw; /* voluntary context switches */
long ru_nivcsw; /* involuntary context switches */
};
但是这里没有分叉的数量。下一个想法是 strace shell 和 children 并寻找叉子。有没有更简单的方法和更少的开销?是否有一些带有非标准选项/变量/机制的外壳来显示分叉的数量?