Cześć,
Chciałem za pomocą procesu dziecka wykonać polecenia ls -la i przekazać rezultat poprzez potok nienazwany do procesu rodzica. Proces rodzica powinien odebrać dane i je wyświetlić na standardowe wyjście. Napisałem coś takiego. Czy ktoś może mi powiedzieć dlaczego poniższy kod nie działa? Co robię źle?
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
int main()
{
pid_t pid;
int fd[2];
char buffer[3];
char *argv[3]= {"ls", "-la", NULL};
buffer[3] = *argv[3];
if(pipe(fd)<0)
printf("Cannot create pipe\n");
int pipe_result;
pipe_result =pipe(fd);
if (pipe_result<0)
printf("error");
pid= fork();
if(pid<0) {
printf("Couldn't create child process, err =%d\n", pid);
return -1;
} else if (pid ==0) {
close(fd[0]);
write(fd[1], buffer, 3);
close(fd[1]);
} else {
close(fd[1]);
read(fd[0], buffer, 1000);
close(fd[0]);
}
return 0;
}