기본적으로 운영체제는 

1. 사용자 공간


2. 커널 

두개의공간으로 나누어져 있다. 문서 편집기 익스플로러같은 응용 프로그램코드는 사용자 공간에 

있으며 네트워크 스택, 같은 OS기반은 코드는 커널에 상주한다.

커널 코드는 민감한 리소스를 관리하며 응용 프로그램 사이의 보안과 신뢰 장벽을 제공한다.

이러한 까닭에 사용자 모드 응용 프로그램은 CPU 에 의해 커널 리소스를 직접 접근하는 것을 막는다.

사용자 공간 응용 프로그램은 사용자 -> 커널로 이동하는 특별한 서브루틴 콜인 시스템 콜의 수단으로

기본 커널의 대부분의 요청을 취한다.  보통 시스템 콜 벡터와 함께 추가되며 여기서 요청자는

원하는 시스템 콜을 색인 숫자로 기억한다.  하지만 이런 시스템 콜에도 드라이버 장치는 막혀있다.

대부분의 하드웨어 주변 기기는 반드시 커널 안에서 직접 접근 하여야 한다. 

그러나 사용자 코드는 장치와 통신해야 하는 경우가 있다. 


일단 마우스 장치에 대해서 

/dev/해당 관련 마우스 장치에 파일을

open ()으로 열어서 리턴되는 fd(File descriptor) 값을 이용하여서


#include <sys/ioctl.h>

int ioctl(int fd, int request, argp);


ioctl (I/O Control)을 통해서 장치 제어를 한다. 


ioctl 의 경우 (int fd, int request, argp) 로 들어오게 된다.


fd는 open으로 인해 반환된 fd(file descriptor)

request : 드라이버에서 취해야 할 명령을 보낸다. 


성공일시 0 값 실패시 -1 반환 


-1을 얻었을시에 error 값을 참조하면 문제 확인 가능(EFAULT argp는 접근할수 없는 메모리 영역)

ENOTTY : fd는 문자 디바이스 파일과 연관되어있지 않다.


EINVAL : 디바이스파일에 연동된 드라이버가 request 또는 argp처리 불가능 


// 

int fd  ; // file descriptor


int ret;

int level = 2;

mousehw_t mhw;


fd = open=("/dev/장치명",O_RDWR);

if(fd==-1)  // -1 이면 에러

{

std::cout<<"Open Error -> Error Number : - > " ;

checking();

std::cout<<""<<std::endl;

}

std::cout<<"Current File Descriptor :: ->>>>  <<fd <<std::endl;


ret = ioctl(fd,MOUSE_SETLEVEL,&level);









'GNU > FreeBSD' 카테고리의 다른 글

COMMAND - top  (0) 2016.07.04
Unix Errno 표기  (0) 2016.07.04
Mouse_Control - 2 일차  (0) 2016.06.30
Mouse_Control - 1 일차  (0) 2016.06.29
Free BSD 유용한 명령어  (0) 2016.06.14


'GNU > FreeBSD' 카테고리의 다른 글

COMMAND - top  (0) 2016.07.04
Unix Errno 표기  (0) 2016.07.04
Mouse_Control - 3 일차  (0) 2016.07.01
Mouse_Control - 1 일차  (0) 2016.06.29
Free BSD 유용한 명령어  (0) 2016.06.14

후킹 -

컴퓨터 프로그램과 S/W 구성 요소간에 발생하는 함수 호출, 메시지 등을 중간에 바꾸거나 가로채는 방법 기술


간섭된 함수를 호출, 이벤트 를 처리하는 코드 = Hook 라고함 


후킹은 이벤트를 훔쳐오는 방식이다.  (OS의 구조를 알아야 한다.)


마우스 후킹 


OS 내에서 이동되는 마우스 를 후킹 한다. 


리눅스 자체에서 마우스를 제어 한다. 


// 


연결 마우스에 대한 파일 

   /dev/cuau%d      serial ports
     /dev/mse%d	      bus and InPort mouse device
     /dev/psm%d	      PS/2 mouse device
     /dev/sysmouse    virtual mouse device
     /dev/ums%d	      USB mouse	device

연결된 포트에 따라서 파라미터로 넘기고 이에 대한 제어를 해야 한다는 것 정도 


open(), write(), ioctl () 사용하여 sysmouse를 제어한다. mosued 에 대한 정보가 필요 


'GNU > FreeBSD' 카테고리의 다른 글

COMMAND - top  (0) 2016.07.04
Unix Errno 표기  (0) 2016.07.04
Mouse_Control - 3 일차  (0) 2016.07.01
Mouse_Control - 2 일차  (0) 2016.06.30
Free BSD 유용한 명령어  (0) 2016.06.14

 

//OpenCV 이미지 변환

//Mat & CvMat & IplImage, CvArr convert function

IplImage to->

 

IplImage* -> cv::Mat

1. Mat Mat_img(IplImage_img);

2. Mat Mat_img = cvarrToMat(IplImage_img);


 

IplImage* -> CvMat

cvGetMat( IplImage_img, &CvMat_img);

 

 

 

cv::Mat to->

 

cv::Mat -> IplImage*

IplImage *IplImage_img = new IplImage(Mat_img);

 

cv::Mat -> CvMat

CvMat CvMat_img = Mat_img; // convert directly

 

 

 

CvMat to->

 

CvMat -> IplImage*

IplImage *IplImage_img = cvGetImage(CvMat_img);

 

CvMat -> cv::Mat

Mat Mat_img(CvMat_img);

 



// 출처 



http://tommyhsm.tistory.com/113

'개발일지(Platform & Library) > OpenCv(2.x)' 카테고리의 다른 글

2. OpenCV  (0) 2016.09.22
1. OpenCV OverView  (0) 2016.09.22
기본 샘플  (0) 2016.08.08
opencv-3.1.0 - Visual Studio 2013 세팅하기  (0) 2016.08.08

저번에 1에서 작성 한 스크립트를 업무에 사용을 하여야 하는데 해당 스크립트는 동작에 대한 기본 틀만 알수 있을 뿐


업무에 사용은 할수가 없다. 


일단 가장 큰 문제는 사용할수가 없다  이다.


sudo 로 사용하였을시 비밀번호를 묻는 입력은 처음에만 나타나고 이후로는 나타나지 않을수도 있기 때문이다.


그렇기 때문에 패스워드에 대한 기대를 2번하고 2번 입력을 하게되면


scp로 파일을 받아 오는 도중에 시그널이 들어가게되면 파일 다운이 종료 되기 때문에 제대로 받아올수가 없다.


두번째 로는 정상적으로 실행이 됐다는 가정하에 


예상대로 Root비밀번호(sudo) 와 서버 계정의 비밀번호를 입력 하면 되겠지만

저 문자열이 아닌 다른 문자열(DNS ~~~ Yes/No ) 이 나오는 경우가 있을수 있다. 이에 대한 해결책으로 



(작성중)

'GNU > bashShell' 카테고리의 다른 글

UNIX Shell 정수 연산  (0) 2016.08.24
UNIX Shell while 반복  (0) 2016.08.16
expect 를 이용한 scp 자동 스크립트 작성  (0) 2016.06.23
UNIX 공백에 대한 변수명 사용시  (0) 2016.06.17
UNIX set 명령어  (0) 2016.06.15



남을 진정으로 위하고 남이 잘될 수 있도록 '어떻게 도와줄까?' 고민하는,
그런 선한 마음은 나를 따뜻하고 행복하게 만들어줍니다.
잡념도 없어지고, 보약이 따로 없습니다.
오늘 기분이 나쁘다면 비록 작은 일이라도 
누군가를 도와줄 생각을 하십시오.

'비공개 카테고리 및 미사용 카테고리 > 옛날 일기장' 카테고리의 다른 글

마우스저거 참  (0) 2016.07.20
마우스 제어 하고싶다  (0) 2016.07.12
QA 입지는 정말 좋지않다.  (0) 2016.06.24
오전 회의  (0) 2016.06.23
김필 - 하늘을 걸어  (0) 2016.06.22

vim-lite 를 설치 하여서 사용하다 보면 워낙 vi에 적응이 되어있어서 vim 이라고 치지 않고


vi tab(자동완성)을 하다보면 아쒸! 하면서 다시 :q! 하고 vim으로 들어오는 경우가 있다.


그럴때 alias로 별칭을 지정해서 사용한다. 뭔가 C에서 #define 느낌이랄까 ;


alias 단축명 = "커맨드" 를 지정하여서 사용 한다.


저같은 경우는 vim 대신 vi가 너무 손에 익어서 


alias vi vim 으로 하여서 vi가 습관적으로 나오지만 vim이 실행되게 한다. 


alias a vim 으로 하게되면 a가 vim을 대신하여서 사용할수 있다.


현재 별칭을 확인하기 위해서는


alias 만 입력시에 현재 별칭이 나온다. 


test@test-Test:~/test % alias

a       vim

h       (history 25)

j       (jobs -l)

la      (ls -aF)

lf      (ls -FA)

ll      (ls -lAF)

vi      vim


이런식으로 나오게 된다. 


어느날 사용도중 엄청난 실수를 하게 된다. alias vi vim 이라고 할것을


alias vim vi 라고 한것이다. 


그래서 '에 뭐야 다시 해야지 '


하고 alias vi vim 을 했다.


그리고 다시 평소처럼 사용시 Alias loop. 라는 메시지가 나타난다. 


vim vi 이고 vi 가 vim이기 때문에 뭔지 모르겠다는 그런 메시진가 보다


이 경우에 대해서 unalias 라는 커맨드가 존재한다.


alias 로 별칭을 확인후에 지울 별칭을 지정하면 된다. 


unalias vim 입력시 alias vim vi 가 사라진다.


해당 명령어는 현재 세션에만 유효하기 때문에 재부팅시 사라지게된다.


해당 alias 명령어는 alias를 지정하는 스크립트에 지정해 놓으면 재부팅해도 사라지지 않는다.


~/User/.bashrc ( or .cshrc) 계정세션


/root/.bashrc(or .cshrc) 




CentOS 7.0에 티베로를 셋팅해야 하는 일이 생김


한번도 깔아보지도 써보지도 않았지만


설치야 뭐 어렵지 않으니  일단 CentOS 7.0 버전 이미지 파일을 받아야 한다.


CentOS-7.0-1406-x86_64-DVD 내가 쓴 파일은 이거였고 


일단 이미지가 있는상태에서 rufus 를 다운로드 한다. 


공홈인진 모르겠지만 http://www.techspot.com/downloads/6062-rufus.html 


받아서 설치 후에


Rufus로 이미지를 굽는다. 


(작성중)





+ Recent posts