간단한 쉘 프로그램을 작성하려고하지만 비 내장 명령에 대한 파일 리디렉션 문제가 있습니다. 예를 들어 ./a.out < infile> outfile을 사용하면 사용자가 infile에서 입력을 가져 와서 평소 사용하는 스트림 대신 출력을 outfile으로 출력하는 프로그램을 작성하게됩니다. 기본 제공되지 않은 명령을 발견하면 새 프로세스를 포크하고 제공된 인수로 새 이미지를 오버레이합니다. 일반적인 형식은 다음과 같습니다. arg1 arg2 ... argn < infile> outfile. args (arg1 ~ argn)는 새 이미지에서 전달되고 입력 및 출력은 infile 및 outfile로 변경됩니다. 다음은 내 포크 프로세스의 모양입니다.기본 제공되지 않는 명령에 대한 단순한 쉘 프로그램 유닉스 파일 리디렉션
pid = fork();
if (pid < 0) {
fprintf(stderr, "*** fork error ***\n");
} else if (pid == 0) {
execvp(command, args);
}
waitpid(pid, &status, 0);
이렇게 할 수있는 유닉스 명령이 있습니까? 나는 또한 새로운 이미지에서 stdin과 stdout을 바꿀 수있는 방법이있을 것이라고 생각하고 있었다. 모든 링크 또는 정보를 주시면 감사하겠습니다.
"fork 오류"는 유용한 메시지가 아닙니다. perror()를 사용하십시오. –