본문 바로가기

Linux

ioctl 함수

ioctl 함수는 기존 read나 write 함수를 통해서 다룰수 없었던 부분을 다루기 위해서 사용된다.

ioctl의 함수 형태는 다음과 같다

 int ioctl( int fd, int request, ...);
 
fd      : 첫번째 인자로 open 함수 실행 결과로  반환된 파일 디스크립터
request : 디바이스파일에 연동된 디바이스 드라이버에 취해야할 명령을 정의한다.
...     : 세번째 인자 부터는 request에 해당하는 명령에 대한 보조적인 정보값이다.

Ex)  밑의 예제는 ioctl 명령을 이용해서 프린트 포트의 핀의 상태를 요청하는 코드 입니다.

#include  
#include 
#include 
#include 
#include   // <----- 프린트 포트 관련 명령이 담겨있는 헤더파일

int main( int argc, char ** argv)
{
 int fd;
 int prnstate;
 int lp;

 unsigned char buff[128];

 fd = open("/dev/lp0", O_RDWR | O_NDELAY); // <----- 프린트 포트 디바이스 열기

 if( fd< 0)
 {
  perror("open error"); // <----- 열기 실패시 에러 메세지 출력
  exit(1);
 }

 while(1)
 {

  ioctl(fd, LPGETSTATUS ,&prnstate); 

  // <----- 프린트 포트의 상태를 요청
  // (프린트 포트에 대한 명령은 LPGETSTATUS, 프린트 포트의 상태가 prnstate변수에 저장된다)

 if(prnstate & LP_PSELECD) printf("ON\n");
 else         printf("OFF\n");

  usleep(50000);
 }

 close(fd);

 return 0;
}


출처 :
http://blog.naver.com/booboo84

'Linux' 카테고리의 다른 글

TFTP 설치  (0) 2010.07.09
IP 설정하기(setup 명령어)  (0) 2010.07.09
chown 명령어  (0) 2010.07.07