|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.02.2011, 14:00 | #1 |
Регистрация: 26.01.2011
Сообщений: 8
|
как из одного процесса получить доступ к памяти, занятой другим процессом?
Добрый день! Пишу программы на С с использованием библиотеки GTK+.
В первой программе создаю переменную а, присваиваю ей какое-нибудь значение, например 40, и с помощью указателя pa вывожу на печать адрес ячейки, в которой она хранится. #include <stdio.h> int main(int argc, char *argv[]) { unsigned char *pa; unsigned char a=40; pa=&a; printf("%p\n",pa);// vivodim adres yacheiki operativnoi pamyati, v kotoroi hranitsya a getchar(); exit(0); } Во второй программе используем полученное в первой программе значение адреса ячейки 0xbfade5d4 для доступа к ее содержимому. По идее должно выводиться число 40, а выходит "ошибка сегментации". Как мне избавиться от нее? Или есть другие способы получения данных из другой программы? Записывать их в файл на жесткий диск не хочу, нужна работа именно через оперативку. #include <stdio.h> int main(int argc, char *argv[]) { unsigned char *pa; pa=(unsigned char *)0xbfade5d4; printf("%i\n",*pa); // pechataem znachenie elementa getchar(); exit(0); } Последний раз редактировалось Bиталий; 09.02.2011 в 14:14. |
09.02.2011, 14:15 | #2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> Во второй программе используем полученное в первой программе значение адреса ячейки 0xbfade5d4 для доступа к ее содержимому.
Процессы в Виндос не разделяют общуюю память с версии 3.0, т.е. лет 15 уже как минимум. > Или есть другие способы получения данных из другой программы? Тысячи их. Я обычно предпочитаю Mapped Memory.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
09.02.2011, 14:21 | #3 |
Регистрация: 26.01.2011
Сообщений: 8
|
Я пишу под Linux - в нем то же самое?
|
09.02.2011, 14:25 | #4 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Упс. В Линухе, я думаю, такое с версии 1.0 )
Тогда гуглить по interprocess communication linux, или щас спецы по линуксу подойдут, расскажут.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
09.02.2011, 14:37 | #5 |
Регистрация: 26.01.2011
Сообщений: 8
|
спасибо! Буду изучать...
|
09.02.2011, 16:22 | #6 |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
Лучше использовать какую-нибудь шину типа d-bus. Как я понял.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su |
09.02.2011, 16:39 | #7 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
наверняка в линуксе есть, что-то похожее на ReadProcessMemory из винды
Последний раз редактировалось NiCola999; 09.02.2011 в 16:42. |
09.02.2011, 19:38 | #8 |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
ptrace(). например
кстати, раз уж пишешь комментарии на русском, то пиши их кириллицей.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su Последний раз редактировалось Obey-Kun; 09.02.2011 в 19:42. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Файл занятый другим процессом | Thandem | Помощь студентам | 0 | 26.09.2010 01:33 |
Если файл заблокирован другим процессом | КаМММ | Microsoft Office Excel | 2 | 20.05.2010 00:12 |
Файл занят другим процессом | Adonidi | Общие вопросы Delphi | 4 | 25.03.2010 21:38 |
Как различить два процесса одного приложения? | viter.alex | Win Api | 1 | 31.03.2009 21:01 |
Работа с файлом, занятым другим процессом | Viteef | Общие вопросы Delphi | 3 | 10.05.2007 20:45 |