Я хочу запустить: cat
somefile | program
> outputText в системе UNIX.
Я просмотрел многие вещи, такие как pipe, использование popen, dup2 и т. д.; Я потерян.
Основной код должен быть:
- Прочитайте все, что выводит
cat
, используяprogram
, и сделайте немного волшебства, а затем выведите данные в outputText.
Любые советы, пожалуйста?
P.S. Файлы являются двоичными.
ОБНОВЛЕНИЕ:
Я нашел этот код, который работает с предписанной командой выше... Но он делает то, что мне не нужно.
- Как избавиться от
sort
? Я пытался стереть что-то, но потом получаю ошибки и программа не запускается. - Чтение данных с помощью
cat
в двоичном виде - Вывод данных на терминал в бинарном виде
Любые советы, пожалуйста?
int main(void)
{
pid_t p;
int status;
int fds[2];
FILE *writeToChild;
char word[50];
if (pipe(fds) == -1)
{
perror("Error creating pipes");
exit(EXIT_FAILURE);
}
switch (p = fork())
{
case 0: //this is the child process
close(fds[1]); //close the write end of the pipe
dup2(fds[0], 0);
close(fds[0]);
execl("/usr/bin/sort", "sort", (char *) 0);
fprintf(stderr, "Failed to exec sort\n");
exit(EXIT_FAILURE);
case -1: //failure to fork case
perror("Could not create child");
exit(EXIT_FAILURE);
default: //this is the parent process
close(fds[0]); //close the read end of the pipe
writeToChild = fdopen(fds[1], "w");
break;
}
if (writeToChild != 0)
{
while (fscanf(stdin, "%49s", word) != EOF)
{
//the below isn't being printed. Why?
fprintf(writeToChild, "%s end of sentence\n", word);
}
fclose(writeToChild);
}
wait(&status);
return 0;
}
cat
для передачи в него, когда вы можете просто установитьstdin
изprogram
наsomefile
? то естьprogram < somefile > outputText
- person FatalError   schedule 19.09.2014cat somefile | program > output
, то вы на неверном пути. Выполнение такой команды делает оболочку трубой для вывода изcat
во входprogram
. Это не то же самое, что настроить канал внутри вашей программы. en.wikipedia.org/wiki/Redirection_(computing)#Piping - person Henrik   schedule 19.09.2014cat
вstdin
изprogram
! - person raffaello   schedule 19.09.2014program
в команде? - person Henrik   schedule 19.09.2014program
или назовите это как угодно, предполагается, что textAlteration изменяет вводstdin
, который подается изcat
. - person raffaello   schedule 19.09.2014stdin
. - person Henrik   schedule 19.09.2014