Программа не завершается после выполнения - C (СИ)

Узнай цену своей работы

Формулировка задачи:

программа выводит определённые строки текстового файла на экран, сортируя их. всё работает отлично, но программа не завершает выполнение, пока пользователь не нажмёт Enter, а почему-то ожидает ввода.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>
 
int main(void)
{
int fd[2], fd2[2], pid, pid2;
int file = open("text.txt", O_RDONLY);
pipe( fd );
pipe( fd2 );
dup2( file, fileno(stdin) );
close( file );
printf("\n");
 
if ((pid = fork()) == 0)
{
dup2( fd2[0], fileno( stdin ) );
close( fd2[0] );
close( fd2[1] );
execl( "/usr/bin/tail", "tail", NULL );
}
else
if ((pid2 = fork()) == 0)
{
dup2( fd[0], fileno( stdin) );
dup2( fd2[1], fileno( stdout ) );
close( fd[0] );
close( fd[1] );
close( fd2[0] );
close( fd2[1] );
execl( "/usr/bin/head", "head", "-215", NULL );
}
else
if (pid > 0 & pid2 > 0)
{
dup2( fd[1], fileno( stdout ) );
close( fd[0] );
close( fd[1] );
execl( "/usr/bin/sort", "sort", "-u", NULL );
}
else {
exit(0);
}
return(0);
}
подскажите пожалуйста, в чём ошибка. Нужно, чтобы программа выводила строки и выходила. программируем в putty. спасибо)

Решение задачи: «Программа не завершается после выполнения»

textual
Листинг программы
(pid > 0 & pid2 > 0)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы