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 구차니
Linux2009. 6. 19. 23:12
일반적으로 많이 사용하는 리다이렉션은

>  - 파일에 저장(새로파일 생성)
<  - 파일에서 불러옴
|  - 파이프라인, 결과를 이어줌
>> - 파일에 저장(기존파일에 이어서 붙임)
이정도이고, 잘 사용되지는 않지만 유용한 것으로는

2>  - 에러만 파일에 저장
정도가 있다.
>는 stdout 만 리다이렉션해서 화면으로는 에러가 출력되고
2>는 stderr 만 리다이렉션해서 화면으로는 정상 메시지가 출력된다.

둘다 리다이렉션해서 파일로 저장하고 싶다면

2>&1
이렇게 하면 된다.
예를 들어 컴파일시 모든 메시지를 저장하고 싶다면
$ make install 1> err.log 2>&1
라고 하면 된다.

> word
    The standard output (file descriptor 1) is sent to the file word which is created if it does not already exist.

>> word

    The standard output is sent to file word. If the file exists then output is appended (by seeking to the end); otherwise the file is created.

< word

    The standard input (file descriptor 0) is taken from the file word.

<< word

    The standard input is taken from the lines of shell input that follow up to but not including a line consisting only of word. If word is quoted then no interpretation of the document occurs. If word is not quoted then parameter and command substitution occur and \ is used to quote the characters \ $ ` and the first character of word. In the latter case \newline is ignored (c.f. quoted strings).

>& digit

    The file descriptor digit is duplicated using the system call dup (2) and the result is used as the standard output.

<& digit

    The standard input is duplicated from file descriptor digit.

<&-

    The standard input is closed.

>&-

    The standard output is closed.

[링크 : http://www.partmaps.org/era/unix/shell.html]

<&Digit      Duplicates standard input from the file descriptor specified by the Digit parameter
>& Digit     Duplicates standard output in the file descriptor specified by the Digit parameter
<&-          Closes standard input
>&-          Closes standard output
<&p          Moves input from the co-process to standard input
>&p          Moves output to the co-process to standard output

[링크 : http://www.softpanorama.org/Scripting/Shellorama/input_and_output_redirection.shtml]

Posted by 구차니
Linux2009. 6. 19. 23:05
콘솔 메시지 막기

커널 부트 옵션에 quite 를 넣어주면, dmesg 쪽으로 나가는 것은 버퍼링 쌓이지만,
화면으로 출력이 되지 않아, 부팅시 약간의 속도 향상을 기대 할 수 있다고 한다.

[링크 : http://elinux.org/Disable_Console]




시리얼 포트로 콘솔 메시지 출력하기

/etc/inittab
/boot/grub/grub.conf
/boot/grub/menu.lst 파일을 수정해야 한다. 수정 부분이 많으므로 링크 참조

kernel /vmlinuz-2.6.9-42.0.10.ELsmp ro root=LABEL=/ console=tty0 console=ttyS1,19200n

[링크 : http://www.cyberciti.biz/faq/linux-serial-console-howto/]
Posted by 구차니
Linux2009. 6. 19. 20:47
커널소스를 분석해 보진 않아서 정확하게 어떻게 여는지는 모르겠지만,
아마 tty 특성상 canonical mode로 여는것으로 보인다.

/dev/console is a symbolic link to /dev/tty0, and the kernel regards /dev/tty0 as a synonym for the current VT. XFree86 1.3 changes the owner of /dev/tty0, but does not reset this after finishing. Thus, loadkeys or dumpkeys might fail because someone else owns /dev/tty0; in such a case you might run X first. Note that you cannot change keyboard mappings when not at the console

[링크 : http://www.faqs.org/docs/Linux-HOWTO/Keyboard-and-Console-HOWTO.html]

Posted by 구차니
Linux2009. 6. 19. 20:35
$ sudo apt-get install manpages-dev

한가지 신기한 건, 페도라에서는 open이 3p에 있었는데 우분투는 2에 있다.


[링크 : http://mcchae.egloos.com/6956190]
Posted by 구차니
Linux2009. 6. 19. 18:21
이런 기능이 있는지도 몰랐는데..

Ctrl-S는 일시정지
Ctrl-Q는 일시정지 풀기 란다.


[링크 : http://nomoreid.egloos.com/1079123]
Posted by 구차니
개소리 왈왈2009. 6. 19. 15:27

구글 통계에서 나온 방문자 시간대별 방문 통계인데
역시 한국인은 밥시간은 잘 지켜야지 착한 어린이다 ㅋㅋ

"밥은 먹고 다니냐?"

가 머리를 맴돈다 -ㅁ-!


사족 : 전형적인 숙제블로그는 아닌건가 -ㅁ-!
         숙제블로그라면 6시 이후에서 새벽 2시 까지가 피크일텐데!

'개소리 왈왈' 카테고리의 다른 글

도를 아십니까?  (2) 2009.06.24
구차니 패닉  (10) 2009.06.20
구글 애널리틱스 - 유입 경로  (0) 2009.06.19
네이년 검색 유입을 노려야 하나?  (0) 2009.06.19
오늘의 유머 - 개발자 이야기  (0) 2009.06.18
Posted by 구차니
개소리 왈왈2009. 6. 19. 10:21
구글 애널리틱스를 설치해서 3일째 분석중이다.
(이전글과는 너무 다른 모습일려나?)

아무튼 내 블로그는 거의 대부분의 검색유입이다.



1위는 구글 검색 유입
2위는 다음 검색 유입
3위는 직접 주소를 입력(혹은 즐겨찾기?) 해서 오는 유입


그나저나 방문시간이 짧다는 것과, 방문자별 페이지수가 적은건 좋게 받아 들여야 할지
나쁘게 받아 들여야 할지 참.. 애매하다.

'개소리 왈왈' 카테고리의 다른 글

구차니 패닉  (10) 2009.06.20
개발자도 밥 시간은 지켜야지!!!  (2) 2009.06.19
네이년 검색 유입을 노려야 하나?  (0) 2009.06.19
오늘의 유머 - 개발자 이야기  (0) 2009.06.18
예비군 훈련 공지  (2) 2009.06.18
Posted by 구차니
개소리 왈왈2009. 6. 19. 10:08
문득 Kay~ 님의 블로그에서 네이버 / 다음 검색 유입 키워드가 상반된다
이야기를 보고 내 검색유입을 보았더니.. 네이버는 전혀 없다 -ㅁ-!

그래서 순간 손이 움찔움찔 하면서 검색 요청을 해!!!
라는 말이 소근소근 들려 왔지만 등록하려는 순간 힘이 빠져 뒤로가기를 누르게 되었다.
네이버에서 안오면 어때~ (그렇다고 내가 극렬 네이버 안티는 아니지만, 나름 삼송 안티이긴한데 -ㅁ-)

그렇게 그냥 구글신님과 다음검색 유입으로 만족을 해야 하나 흐음..

그런데 원론적인 의문이 들었다.
"왜 많은 사람들이 오기를 바라는거지?"

난 블로그에 광고를 다는 것고 아니고, 유명해지고자 하는 블로그도 아닌데
어느 순간 부터 방문자에 너무 목을 매고 있었던 걸까? 라는 생각이 들었다.
물론 유명해지면 좋고, 많이 오면 혹시 떡고물이 떨어질수도 있고, 광고 욕심도 생겨 달면 달러 벌이도 할 수 있고
좋을수도 있긴 하지만, 글쎄?

기억의 외부 저장장소로 블로그를 사용하는데 굳이 많은 사람들이 찾을 이유가 있나?
원래 블로그 시작 목적은, 정말 주옥~ 같은 알찬 정보로 가득찬 조용한 블로그 아니었던가?





아무튼, 아래는 네이버에 검색등록 방법 FAQ 내용 / 다음의 검색등록 페이지

[링크 : http://help.naver.com/faq/exSelfRARAMain.jsp?reQuestion=%BA%ED%B7%CE%B1%D7+%B0%CB%BB%F6&query_gubn=url&question=%C6%BC%BD%BA%C5%E4%B8%AE+%B0%CB%BB%F6&sch_option=all]

[링크 : http://help.search.daum.net/help/register.html]



사족 : 그냥 조용히 살자~ ㅋㅋㅋ
Posted by 구차니
개소리 왈왈/자전거2009. 6. 19. 00:15

지도를 보면 이해가 바로바로 될 듯 -ㅁ-!
술도 안 먹었는데 왜 이런거지 -ㅁ-!

아무튼 한강공원쪽으로해서 가락시장쪽 출구 까지는 16km/42min 걸렸다. (계산상으로는 22.8km/h 이다.)
물론 지도상에서 재본거는 13.8km 3km 오차가 나는거 봐서는 속도계를 손을 봐야 할 듯 하다.
(지도상거리로 계산하면 19.7km/h)
원래 대로라면 26인치라서 원래 수치보다 적게 넣어서 겨우겨우 대충 맞췄다고 생각했는데, 더욱 줄여야 하나 고심중이다.


아무튼 도심을 뚫는건 길을 잘못 들은 탓이 크긴 하지만, 제대로 만 간다면 20분내에 도착이 가능하고,
시간상으로는 20분 단축이 되는 것이다. 그리고 나서 계속 달릴수만 있다면
1시간 내에 회사 까지 갈 수 있을 듯 하다.(총 20km)


결론 : 비싼 자전거 보다 비싼 다리를!!! 구차니군 다리는 100만불 짜리 다리~
Posted by 구차니