■ 디바이스 파일 생성 - mknod()

   : 쉘에서 '# mknod ' 명령을 사용하여 디바이스 파일을 만들 수 있지만,
     응용 프로그램 내에서 디바이스 파일을 만들어야 할 경우에 사용 된다.


■ 매개변수 전달

   int mknod(const char *pathname, mode_t mode, dev_t dev);

   - const char *pathname : 작성할 디바이스 파일 명
   - mode_t mode : 접근 허가(perm) 및 디바이스 타입. (OR 연산으로 설정)
   - dev_t dev : 디바이스 주번호 / 부번호 (시프트 연산으로 같이 입력)


■  디바이스 타입

   - S_IFCHR : 문자 디바이스
   - S_IFBLK : 블럭 디바이스


■ 접근 허가

   - S_IRWXU : 사용자 읽기, 쓰기 가능
   - S_IRWXG : 그룹 읽기, 쓰기 가능


■ ex ) 'dev/test' 디바이스 파일을 주번호 241, 부번호 1을 가진 문자 디바이스로 생성 할 경우

   - mknod("dev/test", S_IFCHR|S_IRWXU|S_IRWXG, (241<<8)|1);
   => 32비트 중 하위 16비트가 주번호, 부번호를 설정하는 영역인데
       16비트중 상위 8비트가 주번호 영역이라 주번호를 8비트만큼 시프트 시키는 것이다.

   - 쉘에서 다음과 같은 명령은 위와 동일한 처리를 한다.
   => #mknod /dev/test c 241 1


by 민트앤라떼 2011. 4. 4. 16:01