포트 제어 하는 함수 ioperm() 함수를 루트권한 말고 일반사용자
글쓴이: decacros / 작성시간: 목, 2003/05/08 - 10:47오후
병렬포트를 제어를 일반사용자권한으로 할수 없나요??
ioperm() 함수에서 operation not permitted 라는 메세지가 뜹니다.
소스 코드 올리겠습니다. setuid() 함수를 쓰면 된다는데. 아무리 해도 안됩니다.
지금 // 주석 된 부분을 setreuid(500,0),setreuid(0,0),setreuid(0,500) 이렇게
여러가지 경우 해 보아도 안되었습니다.
setuid(0);
if(ioperm(BASE_PORT, 3, 1))
{
perror("ioperm");
exit(1);
}
#include <sys/io.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
void port_ctrl(int pin1, int pin2, int pin3, int pin4, int pin5, int pin6, int pin7, int pin8, int BASE_PORT)
{
int value;
// setuid(500);
if(ioperm(BASE_PORT, 3, 1))
{
perror("ioperm");
exit(1);
}
value=pin1*1+pin2*2+pin3*4+pin4*8+pin5*16+pin6*32+pin7*64+ pin8*128;
outb(value, BASE_PORT);
exit (0);
}
Forums:
댓글 달기