Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main(int argc, char* argv[]){
- char* argument1[]={argv[1], NULL};
- char* argument2[]={argv[2], NULL};
- int fd[2];
- int d;
- pid_t pid;
- char buffer[30];
- if(argc < 3){
- printf("No parameter");
- return 1;
- }
- if(pipe(fd)==-1){
- perror("pipe failed");
- exit(1);
- }
- else{
- pid=fork();
- if(pid==0){
- /*child process*/
- close(1);
- dup(fd[1]);
- close(fd[0]);
- //close(fd[1]);
- execvp(argument1[0], argument1);
- }
- else if(pid>0){
- /*Parent process*/
- close(0);
- dup(fd[0]);
- close(fd[1]);
- //close(fd[0]);
- execvp(argument2[0], argument2);
- }
- }
- return 0;
- }
- int m_pipe(char *cmd1, char *cmd2)
- {
- int fd[2];
- if (pipe(fd) == -1)
- {
- perror("Pipe failed ");
- return (-1);
- }
- if (fork() == 0)
- {
- /*Child process*/
- dup2(fd[0], 0);
- close(fd[1]);
- m_exec(cmd2);
- }
- else
- {
- /*Parent process*/
- dup2(fd[1], 1);
- close(fd[0]);
- m_exec(cmd1);
- }
- return (0);
- }
- int main(int argc, char* argv[])
- {
- if(argc != 3)
- {
- write(2, "Usage ./a.out cmd1 cmd2n", strlen("Usage ./a.out cmd1 cmd2n"));
- return EXIT_FAILURE;
- }
- if (m_pipe(argv[1], argv[2]) == -1)
- return EXIT_FAILURE;
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement