프로세스가 mmap을 사용하여/proc/self/exe를 읽을 수 있습니까? 현재이 실수를하고 있습니다/proc/self/exe는 mmap 될 수 있습니까?
$ cat e.c
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
int main()
{
int f=open("/proc/self/exe",O_RDONLY);
char*p=mmap(NULL,0,PROT_READ,0,f,0);
return 0;
}
$ cc e.c -o e
$ strace ./e
[snip]
open("/proc/self/exe", O_RDONLY) = 3
mmap(NULL, 0, PROT_READ, MAP_FILE, 3, 0) = -1 EINVAL (Invalid argument)
exit_group(0) = ?
+++ exited with 0 +++
[잘못된 읽기 - 쓰기 mmap에 대한 인수?] (http://stackoverflow.com/questions/18420473/invalid-argument-for-read-write-mmap) – usr
가능한 경우 동일한 파일을 매핑 할 수 있습니다. 프로그램 시작시 프로그램 파일 이름 인'main()''의'argv [0]'을 매핑하여 실행하십시오. –
@LuisColorado, argv [0]은 $ PATH –