쉘 짜는데 exec 후에 while loop 에러
shell을 짜는데 parsing까지 다 하고 exec()까지 잘 호출되지만
그 다음 loop에서 문제가 발생했는데요.
첫 입력한 게 버퍼에 남아서인지 두 번째 loop 때 입력 받지도 않고 자식 무한 생성하길래
버퍼 비우는 코드 넣어봤더니 이제는 입력을 두 번 해야되더군요.
(정확히 말하면 첫 번째 loop에서의 입력은 무시되고 두 번째 loop에서의 입력은 성공)
그리고 가장 중요한 건 그 loop를 마지막으로 프로그램이 끝나버립니다.
질문의 요지는
1. 입력을 받고 나중에 버퍼를 비웠는데 왜 첫 입력이 무시되는가? (무시 되고 두 번째 loop로 가는 것도 이상;;)
2. while은 대체 왜 안돌아가는 걸까요?
대략적인 코드인데 전체 코드 필요하시면 더 추가하겠습니다.
(...)
while (1) {
printf("COMMAND->");
parse_cmd(inputBuffer, args); // 입력 문자열을 공백 기준으로 parsing. 함수 안에서 fgets() 호출
if ((pid = fork()) == -1)
fatal("fork failed"); // error 출력 함수
if (pid != 0) {
execvp(args[0], args);
fatal("exec failed");
}
// while (getchar() != 'n') ;
}
근데 들여쓰기 어떻게 하나요? 특수문자로 채워넣긴 했는데,,,
에구..
부모랑 자식 바꿔서 호출했네요 ;;
댓글 달기