Могу ли я получить текущий рабочий каталог в SystemTap под RHEL6 - PullRequest
0 голосов
/ 01 января 2019

У меня есть следующая программа SystemTap:

#!/usr/bin/stap
function proc:string() {
    return sprintf("[%s] %s(%s)::%s() (pid %d, uid %d, cwd %s)",
        execname(), cmdline_arg(0), cmdline_args(1,-1,", "), caller(), pid(), uid(),
        fullpath_struct_path(task_cwd_path(task_current()))
    );
}

probe syscall.open.return, syscall.stat.return,
    syscall.open64.return ?, syscall.stat64.return ? {
    filename = user_string($filename);
    if ($return < 0) {
        eno = -$return;
        printf("%s => %s '%s' by %s\n", pn(), errno_str(eno), filename, proc());
    }
}

при запуске она получает следующую ошибку:

семантическая ошибка: неразрешенная функция (аналогично: d_path, inode_path, task_cpu,task_current, task_dentry_path): идентификатор 'task_cwd_path' в / tmp / stap-test: 5: 30

, что, как я считаю, связано с тем, что Red Hat не добавляла функцию task_cwd_path() до RHEL7.Есть ли альтернативный способ вернуть текущий каталог, который будет работать с RHEL6?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...