Это еще один вопрос типа «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
Простая программа типа bash [закрыта] ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Основная программа C ++ не может быть закрыта даже путем прекращения процессов [закрыто]
Anonymous » » в форуме C++ - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Процесс подачи заявки WIN32 не заканчивается, когда программа закрыта (C ++)
Anonymous » » в форуме C++ - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-