#include <iostream>
#include <unistd.h>
#include <fcntl.h>
#include <sys/wait.h>
using namespace std;
int main() {
int fd[2];
int ret = pipe(fd);
if(ret = -1)
{
cout<<"pipe init failed"<<endl;
}
else
{
cout<<"OK"<<endl;
}
int pid = fork();
if(pid >0)
{
close(fd[1]);
char buf[4096];
while(1)
{
//memset(reinterpret_cast<wchar_t *>(buf), 0, sizeof(buf));
int len = read(fd[0], buf, sizeof(buf));
if(len == 0)
{
break;
}
printf("%s, len = %d\n", buf, len);
}
close(fd[0]);
wait(NULL);
}
else if(pid == 0)
{
close(fd[0]);
dup2(fd[1],STDOUT_FILENO);
execlp("ls", "ls", "-l", NULL);
perror("execlp");
}
}