문제

같은 문제를 겪고 있는 내 친구 중 한 명이 stackoverflow를 속였습니다.

이 튜토리얼의 코드를 복사했습니다. http://www.thegeekstuff.com/2012/04/create-proc-files/

그리고 내 프로필을 생성하는 모듈을 만들었습니다.

"text" > proc/name_of_procfile을 에코할 수 있는 procfile을 얻게 되어 기뻤습니다.

고양이와 함께 책도 읽을 수 있어요!!

나는 그것을 속이고 있었고 이제 내 procfile에 상당한 수의 값이 있습니다. 내가 cat할 때마다 이 값을 순차적으로 처리합니다.

Q1.궁금합니다 - procfile에서 값을 어떻게 삭제합니까?

또한 나중에 파일이 내 procfile을 읽을 때마다 proc_file에서 방금 읽은 내용의 값을 변경하는 동작을 얻으려고 노력할 것입니다.

Q2.나는 이것이 내 "int read_info" 메소드에서 구현될 것이라는 것을 알고 있지만 이를 수행하는 방법에 대한 조언이 있습니까?

도움이 되었습니까?

해결책

Q1.

파일 시스템의 일반적인 삭제 작업에서는 이러한 값을 삭제할 수 없습니다.당신은 할 수있다 echo 쓰기 가능한 경우 procfile에 뭔가를 추가합니다.그런 다음 이 '들어오는' 데이터가 어떻게 처리되는지는 모듈의 동작에 따라 달라집니다.저장하거나 폐기할 것인지, 아니면 어떤 방식으로든 내부적으로 처리할 것인지는 모듈이 결정합니다.더 정확하게 말하면 모듈에 넣은 논리가 처리를 정의합니다.이 예제의 모듈에는 매우 간단한 논리가 있습니다.커널이 호출할 때 내부 버퍼에 문자열을 기억합니다. write_info 기능 - 실제로는 새 데이터를 현재 콘텐츠와 연결합니다.그런 다음 커널이 read_info 함수를 호출할 때 이 버퍼의 내용을 반환할 수 있습니다.그렇다면 다음과 같이 하세요.

echo "some text">/proc/yourprocfile
echo "another text">/proc/yourprocfile

그 다음에 cat /proc/yourprocfile 인쇄할 것이다

some text
another text

화면에.요약:이 파일의 전체 동작은 다음과 같습니다. module-defined.

Q2.

평소에 하는 것처럼 거의 할 수 있습니다. C 프로그램.두 가지 주요 차이점이 있습니다.

  • 커널 모드에서 액세스할 수 있는 API는 다릅니다.일부 기능은 표준의 유사 기능과 동일하거나 매우 유사한 이름 및 기능을 갖습니다. C 도서관에는 있습니다.다른 함수는 이름이 다르지만 여전히 일부 사용자 공간 함수와 유사합니다.그리고 커널 공간에서만 사용할 수 있는 특정 기능도 있습니다.

  • 커널 공간에서 수행하는 모든 작업은 여러 번 확인하고 디버깅해야 합니다. on the sheet of paper 모듈의 버그로 인해 최소한 커널 코어 덤프가 발생할 수 있습니다(커널이 중지되면 다음을 눌러야 함). reset 버튼을 눌러 시스템을 재부팅) 최악의 경우 파일 시스템의 데이터 손상을 일으킬 수 있습니다.

따라서 VirtualBox 패키지를 설정하는 것이 좋습니다.이 아름다운 도구를 사용하여 가상 머신을 생성합니다.최소 Linux 버전을 설치하고 설치 후 가상 디스크의 스냅샷을 만듭니다.따라서 문제가 발생하면 언제든지 피해를 되돌릴 수 있습니다.여기에 모든 빌드 도구와 커널 소스를 설치할 필요는 없습니다. 이 가상 머신에서는 모듈/애플리케이션을 로드하고 테스트/디버깅하기만 하면 됩니다.

하지만 어쨌든 여러분이 만질 부분, 더 정확하게 말하면 이미 닿은 부분은 매우 흥미로운 부분입니다.

행운을 빌어요

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