2016-06-08 11 views
5

W Pythonie można nauczyć lokalizację pamięci zmiennych za pomocą funkcji ID, tak:Dostęp do zmiennej z innego programu w C

X = "Hello world!" 
print(id(X)) # Output is equal to 139806692112112 (0x7F27483876F0) 

mam próbował uzyskać dostęp do zmiennych z wskaźniki w C (na pewno drugi program nadal żyje):

#include <stdio.h> 

int main(void){ 
    char *x = (char *) 0x7F27483876F0; 
    printf("%s\n", x); 

    return 0; 
} 

skompilować kod, błędów lub ostrzeżeń, ale kiedy próbowałem uruchomiony program OS daje błąd segmentacji. Jak mogę rozwiązać ten problem?

A może to możliwe?

+9

Każdy program ma swoją własną wirtualną przestrzeń adresową. Więc naprawdę nie możesz tego zrobić. –

+0

Prawdopodobnie będziesz musiał użyć pamięci współdzielonej ... http://linux.die.net/man/3/shm_open –

+0

Lub przeczytaj procfs lub użyj 'ptrace'. – TartanLlama

Odpowiedz

4

Czynienie czegoś takiego jest obecnie coraz bardziej niemożliwe. Dzięki funkcjom, takim jak losowa konfiguracja przestrzeni adresowej, nie można powiedzieć, gdzie dany program, nie mówiąc już o zmiennej, załaduje się w rzeczywistej pamięci.

Najlepszym rozwiązaniem jest użycie przekazu wiadomości. Nie wiem, dlaczego wszystkie notatki na temat twojego pytania, ale wydaje się to rozsądnie postawione pytanie, nawet jeśli nie jest to technicznie wykonalne w tych dniach.

Powiązane problemy