Okay ich versuche es mal damit allzu schwer ist es nicht wenn man sich mit linux und posix auskennt vor der zeit der threads...
	Code:
	#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>
int main(int argc, char *argv[]) {
    int pipefd[2];
    pid_t ls_pid, wc_pid;
    pipe(pipefd);
    if ((ls_pid = fork()) == 0) {
        dup2(pipefd[1],STDOUT_FILENO);
        close(pipefd[0]);
        execl("/bin/ls", "ls","-al", NULL);
        exit(EXIT_FAILURE);
    } 
    if ((wc_pid = fork()) == 0) {
        dup2(pipefd[0], STDIN_FILENO);
        close(pipefd[1]);
        execl("/bin/grep", "grep","mini", NULL);
        exit(EXIT_FAILURE);
    }
    return EXIT_SUCCESS;
}