Arch Linux를 설치하려고 합니다(2014년 4월 1일 스냅샷). 스왑 파일을 만들어서 시도해 보았는데 swapon
, 이해할 수 없는 오류(?) 메시지가 나타납니다.
나는 이미 처형했다
fallocate -l 512M /mnt/sda2/swapfile
chmod 600 /mnt/sda2/swapfile
swapon /mnt/sda2/swapfile
출력은 다음과 같습니다
swapon: /mnt/sda2/swapfile: read swap header failed: Success
:(
명령줄 끝에 있습니다 . 그럼 성공이었나요, 아니면 실패였나요? 스왑 파일을 설정하는 방법이 아닌가요?
답변1
스왑 파일을 설정하는 방법이 아닌가요?
chmod
다음 사이에 한 단계가 누락된 것 같습니다 swapon
.
mkswap /mnt/sda2/swapfile
모순된 오류에 관해서는…
swapon: /mnt/sda2/swapfile: 스왑 헤더를 읽지 못했습니다: 성공
문자 그대로 이는 코드에 버그가 있음을 의미 swapon
하지만 반드시 주요 기능과 관련이 있는 것은 아닙니다.
자주 사용되는 C 라이브러리 함수오류 번호, 오류 코드를 저장하는 전역 변수입니다. 함수 자체는 오류(모든 오류)가 발생했음을 나타내는 값을 반환하며 해당 오류의 정확한 성격은 에 저장됩니다 errno
. 오류 표시를 받으면 값을 확인하여 오류가 errno
무엇인지 정확히 알 수 있습니다. 였다.
strerror()
errno 값(정수)을 가져와서 이와 관련된 인간 언어 문자열을 반환하는 라이브러리 함수 도 있습니다 . 그 중 하나는 Success
오류 코드 0(즉, 오류 없음)에 해당한다는 것입니다.
따라서 이와 같은 내용이 표시되면 버그가 있음을 의미합니다. 예를 들면 다음과 같습니다.
- 오류가 수신되면 다른 함수가 (성공적으로) 호출되어 배후에서 errno를 0으로 재설정한 다음 errno를 사용하여 두 번째 함수를 호출하기 전에 발생한 오류의 상황을 확인합니다.
그리고/또는
strerror()
어떤 시점에서 errno 값이 할당되어야 했지만(이전 오류 발생을 방지하기 위해) 실제로는 할당되지 않은 변수를 전달합니다 .