내 C 프로그램에서 자식 프로세스를 만들고 자식 프로세스에서 execvp를 실행하고 있습니다. 하지만 execvp 명령 (오류가있는 경우)에 대해 오류 메시지를 다른 것으로 변경하려고합니다.dup2를 하위 프로세스와 함께 사용하는 방법은 무엇입니까?
나는 그것을 반환 있다면, 그 다음 내가 다음 줄에 내 자신의 사용자 지정 오류 메시지를 인쇄 할 수 있습니다, 오류라고 것을 알고있다. 이것은 발생할 수있는 오류의 한 유형입니다. 예를 들어 execvp에 "sdfsd"명령을 주면이 문제가 발생합니다. 이 부분은 저를 위해 일하고 있습니다.
하지만 입력하면, 다음 반환 및 인쇄 "찾기 :`sdfsd ': 해당 파일이나 디렉토리"하지 않는다 "sdfsd 찾을 수 있습니다."
나는 내 자신의 사용자 정의 하나에 (exevcp에서 오는 오류 메시지와 본질적으로 어떤 종류)이 메시지를 변경하고 싶습니다.
는 내가이 일을 dup2에 사용할 수 있습니다 생각하지만, 나는
dup2(STDERR_FILENO, 1);
fclose(stderr);
을 시도 자식 프로세스에서
... 방법을 잘 모르겠어요하지만 이것은 단지 서면에서 자식 프로세스를 중지 오류 메시지. 나는 아직도 모든 경우에 내 자신의 메시지를 인쇄 할 수 없습니다.
누구에게 어떻게 해야할지 알고 있습니까? thanks
는 모든 파이프와 파일 디스크립터를 닫을 필요하지? – omega
프로세스가 끝나면 자동으로 닫아야합니다. 실제 프로그램에서는이 작업을 수행하기 전에 정리하는 것이 좋습니다. –
기본적으로 부모 프로세스에서 마지막 부분에서 파이프의 읽기 끝에서 읽을 때 NULL이면 파이프 프로세스의 쓰기 끝 부분에 아무 것도 기록되지 않고 오류가 없음을 의미합니다. NULL이 아니면 자식 프로세스에서 파이프의 쓰기 끝 부분에 무언가가 기록되어 오류가 발생했음을 의미합니다. 이게 옳은 거니? – omega