문제

이 질문은 물었 억지만,모든 솔루션은 나를 위해 노력하고 있습니다.해 스트리밍 stdoutexecvp 를 통해 소켓 클라이언트입니다.관련 클라이언트 코드를 이

static void execute_cmd(int fd, char *cmd, char **params) {
    pid_t cid;
    size_t i = 0, c = 0;

    cid = fork();

    if(cid == 0) {
        close(STDOUT_FILENO);
        dup2(fd, STDOUT_FILENO);

        if(execvp(cmd, params) < 0) {
            fprintf(stderr, "Could not execute \"%s\": %d\n", cmd, errno);
            exit(1);
        }
    } else {
        close(fd);
        waitpid(cid, NULL, 0);
        exit(1);
    }
}

을 복사에 대한 답변을 이 질문.그러나 나는 아무것도 얻을 뒤로하려고 할 때 이 코드:

int sockfd = serverConnect();
write(sockfd, "echo math", 11);
n = read(sockfd, buffer, 1023);

printf("Got %d bytes\n", n);
printf("%s\n", buffer);

close(sockfd);

나는 트리플 검사에는 연결이 설정된다.때 나는 대체 execute_cmd 간단한 write, 클라이언트는 올바르게 인쇄하는 대답이다.아무 일도 일어나지 않을 때 나는 코드를 실행하는,위의 나무 바이트다.내가 제거 dup2 전화과에서 출력 execvp 중 하나를 호출.

아주 절망하기도 pipe 무엇을 찾을 수 있다.나는 어디에서 잘못되었는?명령이 너무 작품에 포탄,그리고 execvp 전화 오류는 발생하지 않습니다.

도움이 되었습니까?

해결책

로 위의 코드는 올바른 것입니다.문제는 잘못 사용하면 이전 strtok 는 결과 침묵의 충돌 strdup.이 fork 위의 단순히 실행하지 않고 내 모든 테스트를 위 strtok 라인입니다.후에 넣 printfs 으로 모든 라인의 코드를 찾을 수 있는 문제입니다.

솔직히,나는 바보 같은 느낌.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top