하드웨어를 구입할때 비용을 지불하고 나서 산 드라이버가 있는데요.
소스랑 같이 포함되서 구입을 하였습니다.
이것을 다른 운영체제에 맞게 포딩작업을 하려고 하는데요.
업체에서 구입한 드라이버랑 거의 비슷하게 변경하는게 좋을것 같아서,
드라이버를 작성하다 보니 거의 비슷해지더라구요.. 운영체제에 따른 함수들
몇개 빼고는요. 또 이게 돈을 받고 작업중이라서 그런데요..
threadpoll 방식을 써서 채팅서버프로그램을 만들고 있습니다.
문제가 생겨서 그러는데요, 쓰레드가 이상없이 잘 돌다가 아무 때나 멈추버립니다. 작업 처리량이 많을 때 특히 잘 멈추고 작업이 없을 때에도 멈춥니다.
소스상의 에러나 로직상의 잘못이 있는지 아무리 찾아봐고 찾질 못하겠구요...
아래는 쓰레드가 멈출 당시의 stack입니다.
(gdb) info thread
* 32 Thread 30751 (LWP 14992) 0x4012390e in __select () from /lib/i686/libc.so.6
31 Thread 29726 (LWP 14991) 0x4012390e in __select () from /lib/i686/libc.so.6
지금하는일을 다음순서로 처리하려합니다
1. unix에서 ftp로 ibm host에 접속
2. samfile을 unix local dir로 download
3. samfile의 ebcdic-> ascii 변환 (한글데이터포함)
4. Biz logic 적용후 db loading.
지금, ftp로 자동접속하는 shell 스크립트를 만들었습니다.
문제는 ibm쪽에서 구분자('|')로 필드구분하여 넘겨주는데요.
레코드단위 구분은 무엇으로 하는지요?
아직 상호간의 협의는 하지않아 혼자 시나리오를 생각하고 있는데요.
ebcdic to ascii (한글포함)변환하는 c 모듈 소스를 찾고있는데요.