학교 유닉스 프로그래밍 수업 숙제로 나온 ‘간단한 리눅스용 쉘 smallsh 만들기’에 착수 했습니다.
C에서 문자열 처리하는건 정말 고통이더군요. 메모리 포인터에 대한 이해가 부족한데 문자열이랑
메모리 포인터로 이것저것 잘라내고 하는 과정이 너무 어려웠어요. 함수 동작을 제대로 이해하지 못하고 있었는데다… 혼자서
하다보니 더더욱 어려웠습니다.; 공부는 역시 여럿이 의견 교환하면서 하는게 더 발전적이 아닌가 싶습니다.
프로그램을 실행하고 나서 들어오는 입력값을 fgets로 한줄 받아다가 그걸 strtok로 토큰단위로 나눠서 execvp로
실행하는 단순한 것이었지만 strtok를 정확히 이해하지 못해서 들어오는 명령어들을 수행하지 못하게 되었습니다.
보니까 fgets에서 마지막에 n를 같이 보내줘서 그걸 없애줘야 하는건가 싶은데 strtok 리턴값을 저장하는 배열이 *token[MAX] 형태인데, 세개 받았으면 그냥 token[2] = 0; 해주면 되야 하는거 아닌가?
여하간 저게 안돼서 각종 명령어 실행이 안되는데다가 저기에만 매달려서 cd나 exit, 각종 환경변수 적용은 하지도 못했습니다.
애초에 server/client를 일주일 이상 잡고 있었던게 문제였죠. 알고나니 너무 단순한 문제에서 시간을 잡아먹어서 더 분통터집니다.
아 진짜 학교 그만두고 싶은 생각이 마구 납니다. 이럴 때마다.
JellyPo에 답글 남기기 응답 취소