мне нужно сделать что-то вроде
echo "data" | cat
Использование
echo "data" | my program
И внутри моей программы вызывается кошка и отправляет мой стандартный ввод в стандартный вывод кошки и получает стандартный вывод от кошки.
Я уже разветвляю процесс, закрываю запись и чтение, dup2 их и исполняю ..
Так что я могу получить стандартный вывод из него, если я выполню один execl ("/ bin / sh", "sh", "-c", "ls -lahtr", NULL), я могу получить список файлов в качестве вывода.
но я не знаю, как отправлять данные, например отправлять эхо-данные, которые я читаю из моего стандартного ввода, и отправлять их в execl ("/ bin / sh", "sh", "-c", "cat" , NULL) stdin и верните мою строку эха.
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sstream>
#include <iostream>
using namespace std;
int main()
{
int ficheiro_fd;
int pipe_fd[2];
char buffer[20];
int num_bytes;
pipe(pipe_fd);
switch ( fork() ) {
case -1:
exit(1);
case 0:
close(pipe_fd[1]);
dup2(pipe_fd[0], 0);
execlp("/usr/bin/base64"," ", NULL);
break;
default:
close(pipe_fd[0]);
//ficheiro_fd = open("output.txt", O_RDONLY);
while ((num_bytes = read(fileno(stdin), buffer, 1)) > 0){
write(pipe_fd[1], buffer, num_bytes);
}
close(pipe_fd[1]);
wait((int*)getpid());
}
return 0;
}
С помощью этого кода я могу отправить некоторые данные в программу, и она пишет на экране, я хочу знать, как я могу получить стандартный вывод и отправить в одну переменную.
Спасибо за помощь, чел.