0
나는이 간단한 프로그램을 썼다. 나는 그것의 출력을 아래에 열어 test.log에 기록하기를 원합니다. 내가 이것을 할 수 있습니까?execve 호출의 출력을 기록하려면 어떻게해야합니까?
int main(int argc, char **argv)
{
int fd = open("test.log", O_CREAT|O_WRONLY);
char *path[2];
path[0] = "/bin/ls";
path[1] = NULL;
execve((char *)&path[0], &path, NULL);
close(fd);
return 0;
}
명령에서 pipe 연산자를 사용하고 stderr 또는 stdout을 파일 또는 다른 파이프로 파이프 할 수 있습니다.이 파일은 하위 프로세스를 사용하여 읽을 수 있습니다. execve를 실행하기 전에 생성 한 파이프에 출력을 파이프하고 자식 프로세스를 사용하여 읽을 수 있습니다. –
파일을 참조하려면 fd 1 (그리고 오류 출력을 catch하려는 경우 fd 2)을 만들어야합니다. 'dup2()'를 참조하십시오. – celtschk
예제를 제공해 주시겠습니까? 나는 그걸 전에 들여다보고 있었지만, 맨 페이지를 잘 이해할 수 없었다. – CaseyJones