어딘가에 동일한 파일을 두 번 열 때 정의되지 않은 의미가 있으므로 읽지 마십시오. 필자의 상황에서는 여러 파일 기술자를 여러 번 연결하여 내 장치를 여러 번 열어보고 싶습니다. 내 장치의 파일 작업은 모두 안전합니다. sys 호출 open()과 등록 된 파일 operation.open()을 호출하는 시점 사이에 Linux의 일부가 안전하지 않습니까?Linux에서 사용자 프로그램에서 내 장치 드라이버를 동시에 두 번 열어도됩니까?
2
A
답변
3
드라이버가 정상적으로 작동하는 한 동일한 장치 파일을 두 번 열어도됩니다. 커널에서 안전하다면 안전하지 못하게하는 숨겨진 부분이 없습니다.
예를 들어 일부 비디오 응용 프로그램은 한 프로세스를 사용하여 표시 또는 캡처를 수행하고 다른 비디오 응용 프로그램은 컨트롤을 처리 할 장치 파일을 엽니 다.
드라이버가 다중 열림을 지원하지 않으면 두 번째 열림이 발생할 때 오류를 반환해야합니다.
1
동일한 프로세스에서 드라이버를 두 번 열 수 있습니다 (드라이버에서 그렇게 할 수있는 경우). 동기화는 드라이버의 책임입니다.
그러나 원시 디스크 장치를 권한있는 사용자로 여는 경우 자신의 프로세스에서 자신의 데이터가 잘리지 않도록해야합니다.
1
동일한 파일을 두 번 열면 이해할 수있는 경우에 잘 정의 된 의미가 있습니다. 프로세스가 모두 읽기/쓰기를 수행하는 경우 여전히 동기화가 필요합니다. 그렇지 않으면 파일이 쓰레기로 가득 찰 것입니다.
장치 드라이버의 경우, 다중 열기의 의미는 전적으로 드라이버에 달려 있습니다. 일부 드라이버는 그것을 금지하고, 다른 드라이버에서는 잘 동작합니다 (예 :/dev/null). 일부 드라이버의 경우 매우 특별한 의미가 있습니다 (예 : 사운드 카드가 여러 앱간에 사운드 출력을 혼합 할 수 있음)
관련 문제
- 1. 동시에 SSH에 두 번 로그인하십시오.
- 2. 어떻게 장치 드라이버를 시작해야합니까?
- 3. 장치 드라이버를 작성하려면 어떻게해야합니까?
- 4. 사용자 공간 프로그램에서 PCI 장치 액세스
- 5. 내 경고가 두 번 표시되는 이유는 무엇입니까? 내 응용 프로그램에서
- 6. Windows 장치 드라이버를 테스트하는 방법
- 7. 사용자 정의 JS로드 두 번
- 8. 내 asp.net 응용 프로그램에서 동일한 CSS 파일을 두 번 추가하면
- 9. "i"변수가 내 프로그램에서 두 번 증가하는 이유는 무엇입니까?
- 10. 사용자 입력이 두 번 묻습니다
- 11. 내 두 아약스가 동시에 요청을 보냅니다.
- 12. Linux에서 USB 호스트 컨트롤러 드라이버를 제거하십시오.
- 13. userspace 리눅스 장치 드라이버를 작성하는 방법은 무엇입니까?
- 14. 동시에 두 라디오 버튼
- 15. 유사한 사용자 두 종류와 함께 장치 사용
- 16. 장치 드라이버를 포함하는 클래스 라이브러리의 예외 처리
- 17. Windows 및 Linux 장치 드라이버의 드라이버를 비교하면
- 18. C/Linux에서 USB 장치 용 드라이버를 만드는 방법에 대한 자세한 정보는 어디에서 찾을 수 있습니까?
- 19. 동시에 두 셀에 쓰기
- 20. Ajax 동시에 여러 번 요청
- 21. 동시에 비동기 메서드를 두 번 호출하는 방법은 무엇입니까?
- 22. .net compact framework : 동시에 두 번 프로그램을 시작하지 마십시오
- 23. 두 번
- 24. Linux에서 장치 드라이버 충돌을 시뮬레이트합니다. 파이썬을 다시로드하십시오
- 25. 사용자 지정 셀에서 uitableviewcell을 두 번 선택
- 26. 내 기능이 두 번 호출되는 이유는 무엇입니까?
- 27. 내 앱이 URLRequest로 두 번 로그인합니다.
- 28. 이미지가 두 번
- 29. WPF 사용자 컨트롤 이벤트 실행 두 번
- 30. 사용자 당 두 번 다른 PHP 요청