Пример #1
0
Файл: pid.c Проект: rdebath/sgt
static struct pidset filter_out_forks(struct pidset in)
{
    /*
     * Discard any process whose parent is also in our remaining match
     * set and looks sufficiently like it for us to decide this one's
     * an uninteresting fork (e.g. of a shell script executing a
     * complex pipeline).
     */
    struct pidset ret;
    int pid;

    pidset_init(&ret);
    for (pid = pidset_first(&in); pid >= 0; pid = pidset_next(&in)) {
        const struct procdata *proc = get_proc(pid);

        if (pidset_in(&in, proc->ppid)) {
            /* The parent is in our set too. Is it similar? */
            const struct procdata *parent = get_proc(proc->ppid);
            if (!strnullcmp(parent->exe, proc->exe) &&
                !argcmp(parent->argv, proc->argv)) {
                /* Yes; don't list it. */
                continue;
            }
        }

        pidset_add(&ret, pid);
    }
    return ret;
}
Пример #2
0
static int vicmp(const char *name, int num, const vdp_instance_t *vi)
{
    int val = strnullcmp(name, vi->name);
    if (val)
        return val;

    if (num < 0)
        num = XDefaultScreen(vi->display);
    return num - vi->num;
}