한개의 프로그램의 변수를 다른 프로그램이 변경할수있나요?

toy의 이미지

한개의 프로그램에 int i ;가 선언되었다고 할때,
다른 프로세스에서 이값을 변경할수있을까요?
다른 프로세스에 파이프나 그런걸 사용해서 i의 주소를 넘겨주고...
어떻게 하면 될것같긴한데 정확히 모르겠네여.. :oops: :oops:

indie의 이미지

프로세스간에 파이프로 메모리 주소를 보내도
그것은 어디까지나 해당 프로세스 내에서만 의미가 있을뿐입니다.
그보다는 shared memory 를 사용하여
프로세스간에 메모리를 공유하세요

집에나 갈까?

dangsan49의 이미지

어떤 시스템인지 모르겠지만, 일반적인 가상 메모리 시스템이라면 불가능 하리라 봅니다.

VENI, VIDI, VICI - Caesar, Gaius Julius -

cdpark의 이미지

dangsan49 wrote:
어떤 시스템인지 모르겠지만, 일반적인 가상 메모리 시스템이라면 불가능 하리라 봅니다.

최후의 수단.. 디버거가 쓰는 방법을 이용하면...

angpoo의 이미지

gdb에서 실행중인 프로그램의 변수 값을 바꿀 수 있는 것처럼
변수의 주소를 직접 액세스해서 수정하는게 가능은 하겠지만
바이너리만 제공되는 프로그램에 크랙등을 만들때나 사용할만한
위험하고 무모한 방법입니다.

역시 용도에 맞게 shared memory등의 IPC를 사용해야죠.

segfault의 이미지

toy wrote:
한개의 프로그램에 int i ;가 선언되었다고 할때,
다른 프로세스에서 이값을 변경할수있을까요?
다른 프로세스에 파이프나 그런걸 사용해서 i의 주소를 넘겨주고...
어떻게 하면 될것같긴한데 정확히 모르겠네여.. :oops: :oops:

segmentation fault 납니다.

윗분 말씀대로 공유메모리 쓰시는편이 나을듯