안녕하세요.
현재 학교 과제로 termcap 라이브러리와 시스템콜들을 사용해서 쉘을 구현하고 있는데요, ncurse라이브러리는 사용이 금지되어있습니다.
작업하는 os버전 또는 터미널에 따라서 작동하는 capability가 다른게 많아서 애를 먹고 있습니다.
예를들어서 커서를 왼쪽으로 한칸 옮기고 싶어서
"le", "#4", "kl" 등을 사용하려고 한다고 치면,
mac에서는 "le", "#4"만 작동,
ubuntu에서는 "le"만 작동, 이런입니다.
그래서 정리하면,
1. os가 달라서 이런 일이 생기는지, 아니면 특정 터미널 마다 터미널 자체에서 지원하지 않는 capability가 있는것인지.
2. 지원하지않는 capability에 대한 정보를 얻을 수 있는 사이트가 없을지.
3. termcap라이브러리를 사용할때 portability를 유지하면서 만들 수 있는 방법이 없을지.
궁금합니다.
compile time에 정해지면 정해진 주소에 정해진 값이 있어야 하고
loading time에 정해지면 상대적인 주소를 프로그램을 실행할 때 마다 매번 계산해야 하고
excution time에 정해지면 그것과는 상관 없이 MMU를 통해서 주소를 알게되는데
excution time에 결정되어 실행되는 경우 실제 주소가 매번 바뀌며 언제 바뀌는지 모른다고 하더라구요 그런데 왜 그런가요?
프로그램이 메모리에 적재되고 프로세스의 상태가 run이라고 하더라도변수의 주소가 run 상태의 시간 안에도 바뀔 수 있다는 뜻인데 그게 어떻게 가능하죠? 그리고 실행중인 프로세스의 위치를 바꿀 필요가 있나요? 실행 중이면 고정시켜서 사용하면 될 것같은데 말이죠
이클립스에서 jni이용하여 디바이스접근을 위해 ioctl함수를 이용하는데..
안드로이드 5.1버전에서는 잘 동작하는데 8.0 버전에서는 동작하지 않습니다.
혹시 이런 경험있거나 잘 아시는분 팁이 있으면 부탁드립니다.
Java_com_example_apptest_JNIWrapper_GetRegister함수가 ioctl에서 -1을 리턴합니다.
파일 오픈은 잘 되고 테스트 함수 add도 잘 동작합니다.