|
sun OS 5.8 에서 사용중인 프로세스인데 잘 되던녀석이 갑자기 안되네요...ㅠ
문제는 mtype 큐로 넘어갈때 그 뒷자리부터 땡겨져서 사라집니다.
예를들면 다음과 같습니다. 120길이의 데이터를 큐에 넣는거죠.
int mtype;
char mdata[116];
mtype = 1011;
mdata(편의상 대충) = 'ABCDEF'
이걸 큐에 넣는데 빠져나가질 않더랍니다. (ipcs -opq해보니 들어간 프로세스는 있는데 나간 프로세스가 없습니다.)
그래서 msgrcv의 옵션을 0으로 넣어서 다 땡겨 봣더니 처음에 mtype에 들어가 있어야할 4byte 1011에 ABCD가 들어가 있는겁니다. ㅠㅠ 이거 대체 왜 그런걸까요..
이거 때문에 굉장히 많은 곳에서 문제를 일으키고 있습니다. ㅠㅠ....
man page에서 msgget의 mtype은 long int로 선언 되어 있어서 long int로 mtype을 선언했더니 타입이 제대로 들어가긴 하나 버퍼사이즈를 120으로 정해서 넣었던 데이터가 128로 들억가버리는 문제 때문에 계속적인 문제를 일으켜서 이것 역시....
간밤에 무슨일이 있었던 걸까요? 큐의 권한도 바뀌지 않았고 소스의 변경도 없었고 미치겠습니다... 혹시나 하는 마음에 다른 서버에서 잘 구동되고 있는 소스를 가져와서 컴파일 했는데도 역시 같은 문제로 되지 않습니다..
ㅠ_-초보개발자보더가 눈구경은 하지도 못하고 삼실서 썩고 있습니다....ㅠ 도움 부탁드려요~