Linux/Ubuntu2009. 12. 9. 14:50
apt-get 서버의 목록중 캐노니컬 관리 / 커뮤니티 관리 이런식으로 분리를 해놓는 바람에
많은 프로그램들이 기본 설치목록에 빠져있기 때문이다.

System - Administration - Software Sources 를 선택한다.

Communitu-maintained Open Source software (universe)
항목을 선택하고 Close 한뒤, refresh 해주면 서버에서 프로그램 목록을 가져온다.

compiz 모드에서 찍은 스샷이라.. 제목표시줄이 가출.. (먼산)
아무튼 위의 항목을 선택 해주지 않으면, 위와 같이 캐노니컬에서 한게 아니라 Install 버튼이 생기지 않는다

하지만 항목을 선택하고 나면 위와 같이 캐노니컬에서 하지 않지만 Install 버튼이 생긴다.

'Linux > Ubuntu' 카테고리의 다른 글

TC1100에 우분투 설치 관련 문서  (6) 2009.12.10
Xournal + CellWriter  (4) 2009.12.10
Ubuntu 9.10 만세  (4) 2009.12.09
9.10 kalmic 업그레이드 / 맛배기  (0) 2009.11.02
gnome panel에 온도 정보 넣기  (0) 2009.11.02
Posted by 구차니
Linux API/network2009. 8. 27. 14:24
리눅스 터미널 프로그래밍에서
캐노니컬 모드(canonical)는 한줄 단위로 받아들이고
넌 캐노니컬 모드(non-canonical)는 문자 단위로 받아들인다.

[링크 : http://ttongfly.net/zbxe/?document_srl=45222]
Posted by 구차니
Linux2009. 6. 19. 23:44
결국에는 어떤 값들을 처리해주고(tty 관련) 정도의 차이지
버퍼링 되는 것은 동일하고, 생각만큼 큰 차이는 없다고 한다.


일단 테스트 해본결과, canonical 입력의 우선순위가 더 높아 보였다.

#include "stdio.h"
#include "fcntl.h"
#include "sys/types.h"
#include "sys/stat.h"

void main() { char buf; // char buf[16]; int fd, ret;
fd = open("/dev/ttyS0", O_NOCTTY | O_NONBLOCK | O_RDWR); printf("fd[%08X]\n",fd);
while(1) { ret = read(fd, &buf, 1); // ret = read(fd, &buf, 10); if(ret > 0) printf("ret[%d] buf[%s]\n",ret,buf); }
}

위의 소스는 넌블러킹 모드로 하나의 문자를 받는 예제이다.
테스트 방법은
PC 1. 하이퍼터미널로 연결
PC 2. minicom 으로 연결
PC 2. 터미널에서 특정 포트 출력 (echo test string > /dev/ttyS0)
PC 2. 터미널에서 위의 프로그램 실행

sdfasfsadfsadfasfasfasfasfsadf

 CTRL-A Z for help |115200 8N1 | NOR | Minicom 2.3    | VT102 | Online 00:15

ret[-1] buf[▒]
ret[-1] buf[▒]
ret[-1] buf[▒]
ret[-1] buf[▒]
ret[-1] buf[▒]
ret[-1] buf[▒]
ret[-1] buf[▒]
ret[-1] buf[▒]

...

fd[00000003]
ret[1] buf[i]
ret[1] buf[ ]
ret[1] buf[a]
ret[1] buf[m]
ret[1] buf[ ]
ret[1] buf[a]
ret[1] buf[ ]
ret[1] buf[b]
ret[1] buf[o]
ret[1] buf[y]

...

ret[8] buf[this is ]
ret[10] buf[test strin]
ret[2] buf[g st strin]

테스트 1.
두개의 PC를 시리얼로 연결해 놓은 상태(canonical mode?)에서 다른 터미널에서
echo test string > /dev/ttyS0
명령을 수행하여 출력 :: 시리얼을 연채로 똑같은 포트를 또 열어서 출력 가능 함
(둘다 canonical mode로 추측됨)

테스트 2.
non-canonical mode로 터미널에서 키를 입력 받는 위의 소스코드를 실행하여,
원격지에서 하이퍼터미널로 키 입력을 받는지 테스트 함.
두개만 있을때에는 이상없이 작동

테스트 3.
테스트 2 상황에서 minicom을 실행시킴
 ret[-1] buf[▒]
이런식으로 에러가 발생하고 키를 입력 받을 수 없음.

테스트 4.
위의 상황에서 minicom 종료 함.
이상없이 메시지 받을 수 있음.

테스트 5.
반대로 minicom을 구동한 상황에서 소스코드를 실행시킴
메시지를 받을 수 없음 (minicom 쪽이 우선적으로 메시지 받을 수 있음)

테스트 6.
한 바이트씩 받지 않고 10바이트씩 받는 테스트,
하이퍼터미널에 10글자 정도의 문장을 복사하여 한번에 붙여 넣었는데 10글자를 한번에 받지 못하고
이상하게 받아 들이게 됨. non-blocking 에서는 되도록이면 한 문자씩 버퍼에 받아야 할 듯 함.

결론: canonical 입력은 non-canonical 보다 우선적으로 받을 수 있는 것으로 보임.
       캐노니컬 / 넌캐노니컬과는 상관없이 블러킹 / 넌-블러킹 연관이고
       블러킹이 넌-블러킹 보다 우선적으로 보내고/받을 수 있는 것으로 보임.

[링크 : http://stackoverflow.com/questions/358342/canonical-vs-non-canonical-terminal-input]
Posted by 구차니