Простая программа типа bash [закрыта]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Простая программа типа bash [закрыта]

Сообщение Anonymous »

Это еще один вопрос типа «pipe-fork-dup-exec». Я пытаюсь создать простую программу, похожую на bash, которая будет запускаться следующим образом: ./prog -c ''. Например, мне нужен такой ввод: ./prog -c 'echo hello | wc', чтобы дать следующее ' 1 1 6\n'. Моя программа сейчас находится на стадии, когда работает простой код без каналов (т.е. без |). Однако мне не удается заставить его работать с трубами. Можете ли вы мне помочь?
Вот мой текущий код
#include
#include
#include
#include
#include

enum { MAX_SIZE = 50,
MAX_ARGS = 20 };

void read_pipe(int *fd) {
if (!fd)
return;
if (fork()) {
close(fd[1]);
int sz;
char buf[1024];
while ((sz = read(fd[0], buf, sizeof(buf))) > 0) {
printf(buf, sz);
}
}
}

int execute(char **args, int *fdin = nullptr, int *fdout = nullptr) {
pid_t pid = fork();
int code = 0;

if (pid) {
pid = fork();
if (pid) {
if (fdin) {
close(fdin[0]), close(fdin[1]);
}

waitpid(pid, &code, 0);
if (fdout) {
close(fdout[1]);
// read_pipe(fdout);
close(fdout[0]);
}
} else {// in child; write to fdout[1], read from fdin[0]
if (fdin) {
// std::cout

Подробнее здесь: https://stackoverflow.com/questions/781 ... e-programm
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»