exgs / oh_my_minishell

42seoul minishell
2 stars 1 forks source link

Solve the issue #68 #69

Closed exgs closed 3 years ago

exgs commented 3 years ago

issue #68 문제를 해결함. 다만 해결하는 과정에서 알게된 것은 waitpid(pid, &g_status, 0)에서 g_status으로 종료조건을 스스로 가져오기때문에 g_status 값은 알아서 배정된다고 이해하고 있었지만, 그러나 ^D. ^\, ^C 로 종료시에 g_status 는 0 값을 가졌다. 그래서 signal.c 에서 g_status를 수정해도, 코드의 실행 순서상 g_status가 0으로 덮혀졌다. 따라서 ft_execve 함수에서 waitpid(pid, &g_status, 0)waitpid(pid, NULL, 0) 로 바꿔주었다. issue #68 은 해결되었으나, 다른 부분에서 문제가 생길 수 있는 지, 다른 사람들의 확인이 필요함!

ykoh42 commented 3 years ago

^\ 일떄 리턴 값 다른건 수정했는데,

./gnl 이렇게 폴더 접근하거나 execve 실패해서 오류 발생하는 상황에서 g_status를 제대로 못가져오는 문제가 있음

#bash
bash-3.2$ ./gnl
bash: ./gnl: is a directory
bash-3.2$ echo $?
126

# minishell
minishell$ ./gnl
bash: ./gnl: Is a directory
minishell$ echo $?
0
PennyBlack2008 commented 3 years ago

확인 중~

exgs commented 3 years ago

@kohyounghwan 형이 말한 부분 해결했으니, 다시 PR 올릴께 @kohyounghwan @PennyBlack2008