/ proc / self / exe는 mmap'ed 수 있습니까?

에프 비아

프로세스가 mmap을 사용하여 / 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 +++
Ctx

여기서 두 가지 실수를하고 있습니다.

  • 매핑 된 크기는> 0이어야합니다. 크기가 0 인 매핑은 유효하지 않습니다.
  • 공유 ( MAP_SHARED) 또는 개인 ( MAP_PRIVATE) 매핑 을 만들려면 지정해야 합니다.

예를 들어 다음이 작동합니다.

char *p = mmap(NULL, 4096, PROT_READ, MAP_SHARED, f, 0);

전체 실행 파일을 매핑하려면 stat()먼저 파일에 대한 작업을 수행 하여 올바른 파일 크기를 검색 한 다음이를에 대한 두 번째 매개 변수로 사용해야합니다 mmap().

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

mmap / proc / self / maps를 할 수없는 이유는 무엇입니까?

분류에서Dev

/ proc / self에 추가 할 수 있습니까?

분류에서Dev

왜 ed는 Cc로 종료 할 수 없습니까?

분류에서Dev

/ proc / self / oom_score_adj를 설정하는 라이브러리 호출 또는 syscall이 있습니까?

분류에서Dev

c의 sizeof mmap, 내가 할당하는 메모리 수를 어떻게 알 수 있습니까?

분류에서Dev

mmap-ed 메모리에서 유효한 읽기는로드시 SIGBUS를 생성합니다. 왜?

분류에서Dev

OOM 킬러는 어떻게 ulimit (ed) 프로세스를 죽일 수 있습니까?

분류에서Dev

"ed"명령으로 어떤 파일이 변경되었는지 어떻게 알 수 있습니까?

분류에서Dev

mmap의 결과를 정수로 저장할 수 있습니까?

분류에서Dev

/ proc / self는 Linux에서 어떻게 구현됩니까?

분류에서Dev

/ proc에서 'self'는 무엇을 의미합니까?

분류에서Dev

proc-macro 크레이트에 공개 특성을 가질 수있는 방법이 있습니까?

분류에서Dev

설치 디렉토리를 알려주는 Uninstall () proc의 변수에 액세스 할 수 있습니까?

분류에서Dev

/ proc / *의 데이터는 어떻게 수집되며 얼마나 신뢰할 수 있습니까?

분류에서Dev

Docker는 / proc / xxx / stack을 볼 수 없습니까?

분류에서Dev

curry-ed 함수를 Haskell의 다른 함수 그래프로 제한하는 pretty / glib 방법이 있습니까?

분류에서Dev

`/ proc / self / mountinfo`의 "파일 시스템 별 정보"는 무엇입니까?

분류에서Dev

/ proc / fd의 소켓 파일에 대한 자세한 정보는 어떻게 찾을 수 있습니까?

분류에서Dev

Proc 데이터 세트를 사용하여 변수의 길이를 변경하는 방법이 있습니까?

분류에서Dev

Ed : 한 문자열과 다른 문자열을 대체 할 수 있습니까?

분류에서Dev

C 구조를 디스크의 파일에 올바르게 쓰는 방법은 mmap을 사용할 수 있습니까?

분류에서Dev

printfs 호출 중에 mmap이 수행되는 이유는 무엇입니까?

분류에서Dev

/ dev / input / event *가있는 mmap

분류에서Dev

/ proc이 항상 읽을 수 있다고 가정 할 수 있습니까?

분류에서Dev

매개 변수가있는 exe에서 DLL을 실행할 수 있습니까?

분류에서Dev

매개 변수가있는 exe에서 DLL을 실행할 수 있습니까?

분류에서Dev

누구나 "out = self (images)"가 아래 코드에서 무엇을하는지 설명 할 수 있습니까?

분류에서Dev

자신을 참조하는 ForeignKey ( 'self') 차단에 대한 관리자를 어떻게 만들 수 있습니까?

분류에서Dev

mmap으로 읽는이 코드에 어떤 문제가 있습니까?

Related 관련 기사

  1. 1

    mmap / proc / self / maps를 할 수없는 이유는 무엇입니까?

  2. 2

    / proc / self에 추가 할 수 있습니까?

  3. 3

    왜 ed는 Cc로 종료 할 수 없습니까?

  4. 4

    / proc / self / oom_score_adj를 설정하는 라이브러리 호출 또는 syscall이 있습니까?

  5. 5

    c의 sizeof mmap, 내가 할당하는 메모리 수를 어떻게 알 수 있습니까?

  6. 6

    mmap-ed 메모리에서 유효한 읽기는로드시 SIGBUS를 생성합니다. 왜?

  7. 7

    OOM 킬러는 어떻게 ulimit (ed) 프로세스를 죽일 수 있습니까?

  8. 8

    "ed"명령으로 어떤 파일이 변경되었는지 어떻게 알 수 있습니까?

  9. 9

    mmap의 결과를 정수로 저장할 수 있습니까?

  10. 10

    / proc / self는 Linux에서 어떻게 구현됩니까?

  11. 11

    / proc에서 'self'는 무엇을 의미합니까?

  12. 12

    proc-macro 크레이트에 공개 특성을 가질 수있는 방법이 있습니까?

  13. 13

    설치 디렉토리를 알려주는 Uninstall () proc의 변수에 액세스 할 수 있습니까?

  14. 14

    / proc / *의 데이터는 어떻게 수집되며 얼마나 신뢰할 수 있습니까?

  15. 15

    Docker는 / proc / xxx / stack을 볼 수 없습니까?

  16. 16

    curry-ed 함수를 Haskell의 다른 함수 그래프로 제한하는 pretty / glib 방법이 있습니까?

  17. 17

    `/ proc / self / mountinfo`의 "파일 시스템 별 정보"는 무엇입니까?

  18. 18

    / proc / fd의 소켓 파일에 대한 자세한 정보는 어떻게 찾을 수 있습니까?

  19. 19

    Proc 데이터 세트를 사용하여 변수의 길이를 변경하는 방법이 있습니까?

  20. 20

    Ed : 한 문자열과 다른 문자열을 대체 할 수 있습니까?

  21. 21

    C 구조를 디스크의 파일에 올바르게 쓰는 방법은 mmap을 사용할 수 있습니까?

  22. 22

    printfs 호출 중에 mmap이 수행되는 이유는 무엇입니까?

  23. 23

    / dev / input / event *가있는 mmap

  24. 24

    / proc이 항상 읽을 수 있다고 가정 할 수 있습니까?

  25. 25

    매개 변수가있는 exe에서 DLL을 실행할 수 있습니까?

  26. 26

    매개 변수가있는 exe에서 DLL을 실행할 수 있습니까?

  27. 27

    누구나 "out = self (images)"가 아래 코드에서 무엇을하는지 설명 할 수 있습니까?

  28. 28

    자신을 참조하는 ForeignKey ( 'self') 차단에 대한 관리자를 어떻게 만들 수 있습니까?

  29. 29

    mmap으로 읽는이 코드에 어떤 문제가 있습니까?

뜨겁다태그

보관