c - Streaming execvp output via socket -
i know question has been asked billion times, solutions not working me. need stream stdout
of execvp
via socket client. relevant client code this
static void execute_cmd(int fd, char *cmd, char **params) { pid_t cid; size_t = 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); } }
i have tried copy answer on this question. however, nothing when try code:
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);
i triple checked connection established correctly. when replace execute_cmd
simple write
, client correctly prints answer. nothing happens when execute code above, no bytes back. have removed dup2
call , got no output execvp
call either.
getting quite desperate here, tried pipe
, whatever find. did go wrong? command ok, too, works on shell, , execvp
call not throw error.
turns out code above correct. problem incorrect use of earlier strtok
resulted in silent crash of strdup
. fork
above never executed, , tests above strtok
line. after putting printf
s every line of code find problem.
frankly, feel stupid.
Comments
Post a Comment