2010-01-22 5 views
0

Я хотел бы найти все сегменты разделяемой памяти, используемые данным процессом. Мне особенно интересно выяснить shmid, поэтому я могу использовать его в вызовах shmctl().Список всех сегментов разделяемой памяти, используемых процессом в AIX5.3 +

В Solaris я бы просто прочитал/proc/$ PID/map, чтобы выяснить эту информацию (поле pr_shmid). Содержимое этого файла определяется struct prmap_t в sys/procfs.

AIX также имеет файл/proc/$ PID/map. Существует также struct prmap, но, к сожалению, отсутствует поле pr_shmid.

Любые идеи, как я могу достичь этого на AIX5.3 +?

ответ

1

Я не знаю об AIX, в частности, но я думаю, что команда ipcs довольно стандартная, где поддерживается SysV IPC, поэтому я ожидаю, что команда ipcs -m даст соответствующую информацию; разбор выходных данных может быть вариантом, если вы не можете найти лучший способ.

+0

Да, я боюсь, что я должен согласиться с этим решением. Я попытался выяснить, какие вызовы syscalls/library используются «ipcs -m», запустив его через «truss», но, к сожалению, «ipcs» - это setuid root в AIX ... –

+0

кстати. чтобы выяснить, кто создал сегмент shm, мне нужно позвонить «ipcs -mp», –

0

svmon -P перечисляет сегменты памяти процесса по типу.

Вы также можете использовать -S, чтобы узнать, какие PID прикреплены к сегменту. с -S, сначала запустить ИНКЭМ -bmS, затем возьмите SID б/н 0x, и использовать его с

svmon -ls [SID]

Это вернет ИДП прилагается.