2013-11-21 3 views
0

Я хочу знать, есть ли способ получить все параметры и их типы системного вызова linux ... как список или любую структуру данных. используя C или C++. Есть какой-то способ, который дает адреса памяти параметров, но мне нужны реальные значения.Как получить список параметров и их тип системного вызова?

Или, если кто-нибудь может сказать мне, как получить реальные значения из этих адресов памяти? потому что эти адреса содержат разные типы значений в разное время.

Может ли кто-нибудь помочь мне?

+2

'человек <имя Ot в системный вызов>' – qrdl

+0

Можете ли вы привести пример того, что вы имеете в виду? – Duck

+0

в этой ссылке [ссылка] (http://www.linuxjournal.com/article/6100?page=0,1) вы найдете пример, демонстрирующий чтение регистров системного вызова SYS_write. Я хочу это с другими системными вызовами и хочу читать реальные значения вместо адресов памяти. Например, в этом программном выводе: Запись, вызванная с 1, 1075154944, 30 . Здесь 2-е значение - это адрес. –

ответ

1

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

How can I get a list of Linux system calls and number of args they take automatically?

+0

это только дает количество параметров ... Мне также нужны типы параметров. :( –

+1

Если у вас есть разрешение, вы можете просмотреть файл заголовка, в котором они определены, что должно содержать подпись каждого вызова, позволяя вам получать типы. 'Root/include/linux/syscalls.h'. способный анализировать это во время выполнения и получать то, что вам нужно. См. [syscalls.h] (http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/linux/syscalls .h? id = HEAD) –

+0

да, но я в замешательстве ... должен ли я читать его как текст и анализировать требуемую информацию ... или есть ли какой-либо другой умный способ сделать это? может быть метапрограммирование или любым способом для определения типов параметров функции во время выполнения. –

Смежные вопросы