Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2011, 14:00   #1
Bиталий
 
Регистрация: 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.
Bиталий вне форума Ответить с цитированием
Старый 09.02.2011, 14:15   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Во второй программе используем полученное в первой программе значение адреса ячейки 0xbfade5d4 для доступа к ее содержимому.

Процессы в Виндос не разделяют общуюю память с версии 3.0, т.е. лет 15 уже как минимум.

> Или есть другие способы получения данных из другой программы?

Тысячи их. Я обычно предпочитаю Mapped Memory.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 09.02.2011, 14:21   #3
Bиталий
 
Регистрация: 26.01.2011
Сообщений: 8
По умолчанию

Я пишу под Linux - в нем то же самое?
Bиталий вне форума Ответить с цитированием
Старый 09.02.2011, 14:25   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Упс. В Линухе, я думаю, такое с версии 1.0 )

Тогда гуглить по interprocess communication linux, или щас спецы по линуксу подойдут, расскажут.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 09.02.2011, 14:37   #5
Bиталий
 
Регистрация: 26.01.2011
Сообщений: 8
По умолчанию

спасибо! Буду изучать...
Bиталий вне форума Ответить с цитированием
Старый 09.02.2011, 16:22   #6
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Лучше использовать какую-нибудь шину типа d-bus. Как я понял.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 09.02.2011, 16:39   #7
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

наверняка в линуксе есть, что-то похожее на ReadProcessMemory из винды

Последний раз редактировалось NiCola999; 09.02.2011 в 16:42.
NiCola999 вне форума Ответить с цитированием
Старый 09.02.2011, 19:38   #8
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

ptrace(). например
кстати, раз уж пишешь комментарии на русском, то пиши их кириллицей.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 09.02.2011 в 19:42.
Obey-Kun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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