나는 execvp()를 사용하여 주어진 명령을 실행하는 작은 프로그램을 구현 해왔다. 리디렉션을 사용하지 않을 때 잘 작동하지만 내가 같은 명령을 실행할 때 :execvp() 호출 중 리디렉션이 작동하지 않음
cat file1.txt > redirected.txt
고양이는 다음과 같은 오류 메시지를 출력하고, 실패 : 나는 짓을했는지
cat: >: No such file or directory
cat: redirected.txt: No such file or directory
일부 주위를 파고 난 ' 아마도 execvp()가 쉘에서 실행되지 않기 때문에 리다이렉션을 허용하지 않는다고 생각하기 시작했습니다. 즉, 리디렉션이 발생할 때 수동으로 선택해야하고 포크/exec 코드에서 파이프를 사용하여이 제한을 해결해야합니다. execvp()를 사용하는 것보다 더 좋은 방법이 있습니까?
감사합니다.
'fd' (또는 _set_ close-on-exec 플래그)를 닫아야합니다. 그대로, 프로세스는 여분의 열린 파일 디스크립터를 얻는다. 여기서 무서운 것은 아니지만 다른 맥락에서는 문제가 될 수 있습니다. –
@JonathanLeffler : 좋은 소식입니다. 마지막에 거짓 노트를 제거하고 자식에서 close()를 추가하고 dup2()에서 오류 검사를 수정했습니다. – tmyklebu