내 질문은 다음과 같습니다. 저는 임베디드 리눅스 시스템에서 실행되는 소프트웨어가 있습니다.이 소프트웨어에는 pendrive로 데이터를 내보내는 기능이 있습니다. 이제는 내 함정에 빠지며 일부 사용자는 키에 오래된 pendrive를 사용하려고했습니다. 읽기/쓰기 모드와 읽기 전용 모드 사이를 전환 할 수 있습니다. 이제 장치가 읽기 전용 모드인지 확인하는 방법을 알아야합니다.이 방법은 내 응용 프로그램에서 사용자에게 몇 가지 피드백을 보여줍니다. 장치를 마운트하기 전에 읽기 전용 상태를 확인하는 시스템 호출이 있습니까?pendrive가 읽기 전용 모드임을 발견하는 방법은 무엇입니까?
2
A
답변
4
이 문제를 처리하는 일반적인 방법은 파일을 쓰기 위해 열려고 시도한 다음 errno == EACCES
을 확인하는 것입니다. 사전에 확인해야하는 경우
그러나, 그
int on_readonly_fs(char const *path)
{
struct statvfs fsinfo;
while (statvfs(path, &fsinfo)) == -1)
if (errno != EINTR)
return -1;
return fsinfo.f_flag & ST_RDONLY;
}
이다 그러나 이것은 단지 장치를 장착 후 작동합니다.
+1
또한 "ro"플래그에 대해/proc/mounts를 구문 분석 할 수 있습니다. 또는 파일 시스템이 들어있는 장치 이름을 아는 경우 하위 수준에서 볼 수 있습니다 (예 : '/ sys/class/block/sda1 /'장치가 읽기 전용 인 경우 "1"을 포함하는'ro' 파일을 찾을 수 있습니다. –
관련 문제
- 1. 올바른 읽기 전용 속성 작성 방법은 무엇입니까?
- 2. GridViewColumn을 읽기 전용/비활성화로 만드는 방법은 무엇입니까?
- 3. 읽기 전용 종속성 속성을 만드는 방법은 무엇입니까?
- 4. powershell에서 읽기 전용 멤버를 만드는 방법은 무엇입니까?
- 5. 읽기 전용 속성을 설정하는 방법은 무엇입니까?
- 6. 읽기 전용 레지스트리 키를 만드는 방법은 무엇입니까?
- 7. iOS에서 읽기 전용 이메일을 만드는 방법은 무엇입니까?
- 8. latex에서 읽기 전용 문서를 만드는 방법은 무엇입니까?
- 9. DataGridView 읽기 전용 셀
- 10. C# 읽기 전용 파일 읽기/쓰기
- 11. Compact Framework에서 읽기 전용 제거
- 12. 페이지로드 중 읽기 전용 입력
- 13. Grep 모든 읽기 전용 파일
- 14. 읽기 전용 콘센트입니까?
- 15. 프로필러에서 메모리 누수를 발견하는 방법은 무엇입니까?
- 16. 교착 상태에있는 프로그램을 발견하고 발견하는 방법은 무엇입니까?
- 17. 기존 프로젝트를 발견하는 가장 좋은 방법은 무엇입니까?
- 18. 동적 환경에서 읽기 전용 애플릿
- 19. 읽기 전용 연결
- 20. Minix3 읽기 전용 문제
- 21. 문자열의 읽기 전용 목록
- 22. 읽기 전용 폴더 시각화
- 23. mysql에서 읽기 전용 테이블
- 24. 읽기 전용 C#을
- 25. 파일 열기 읽기 전용
- 26. 읽기 전용 특성
- 27. 읽기 전용 데이터
- 28. 델파이 ClientDataset의 읽기 전용
- 29. 이미지 회전 - 읽기 전용
- 30. 읽기 전용 속성 작업
글을 쓰려고 ... ..? 일반적으로이 "장치는 읽기 전용"또는 "파일을 쓸 수 없습니다"라는 메시지는 내보내기/쓰기 시도가 발생할 때 표시됩니다 (예 : 발견 됨) *. 또한 쓰기가 실패 할 수있는 다른 이유가 있습니다. 어떤 경우에도 파일 시스템이 마운트 된 후 읽기 전용 상태 *를 확인하는 더 좋은 기회가 있다고 생각합니다. –
"장치를 장착하기 전에"란 무엇을 의미합니까? 귀하의 응용 프로그램은 장치 장착에 책임이 있습니까? 왜 이렇게이다? –