문제

나는 현재 다양한 시스템 호출에 연결되어있는 프로젝트를 진행하고있는 프로젝트를 진행하고 있으며, 어떤 시스템이 호출되었는지에 따라 로그에 글을 쓰고 있습니다. 예를 들어, 파일의 권한을 변경하면 이전 권한과 새 권한을 추적하는 로그 파일에 약간의 항목을 씁니다. 그러나 나는 내가보고 있어야 할 곳을 정확히 고정시키는 데 어려움을 겪고있다. 위의 예에서 Strace는 "chmod"명령이 시스템 호출 Sys_fchmodat ()를 사용한다고 알려줍니다. 그러나 sys_chmod ()와 sys_fchmod ()도 있습니다.

커널 개발자가 자신이하고있는 일을 알고 있다고 확신하지만,이 모든 (겉보기에) 중복 시스템 호출의 요점은 무엇이며 어떤 규칙이 사용되는지에 대한 규칙이 있습니까? (즉, "at"syscalls 또는 "f"로 접두사가 특정한 일을 할 수 있습니까?)

도움이 되었습니까?

해결책

예, 이름 지정 규칙이 있습니다.

  • Chmod는 파일 이름을 가져오고 FCHMod는 파일 설명자를 가져옵니다. STAT 대 FSTAT에 대해서도 동일합니다.
  • FCHMODAT는 파일 디스크립터/파일 이름 쌍 (디렉토리의 파일 디스크립터 및 디렉토리의 파일 이름에 대한 파일 이름)을 가져옵니다. 전화시 다른 *에 대해서도 동일합니다. 의 노트 섹션을 참조하십시오 http://kerneltrap.org/man/linux/man2/openat.2 설명을 위해.

다른 팁

역사 :-)

시스템 호출이 생성되면 변경할 수 없으므로 새로운 기능이 필요할 때 새 시스템 호출이 생성됩니다. (물론 이것은 새로운 시스템 호출이 생성되기 전에 매우 높은 막대가 있음을 의미합니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top