Описание тега dup2
NoneDup2() is a c system call that duplicates a file descriptor. Also use this tag for questions about the related system call dup().
0
ответов
Использование dup2 и execvp в c
Я пишу программу, которая открывает 2 файла (файл1 только для чтения и файл2 только для записи), затем открывает дочерний процесс, заменяет stdin с file1 а также stdout с file2 с помощью dup2() а затем запускает некоторую команду оболочки (sort,cat,…
15 янв '16 в 08:45
0
ответов
У моих детей отсутствуют проблемы с Fork dup2 и execvp
Этот код должен читать в conc ls -l /bin > Dout/concBin.txt , ls -l /usr/bin > Dout/concUsrBin.txt , ls -l /etc > Dout/concEtc.txt и затем распечатайте ppid, который он должен перенаправить после разветвления, но перед выполнением. в настоя…
01 дек '17 в 06:37
1
ответ
Почему этот код останавливается при вызове./prog ls ls wc 1.txt?
При компиляции этого кода и вызове ./prog ls ls wc 1.txt (должно быть (ls; ls) | wc > 1.txt этот код останавливается и выполняется только после Control-d. В чем дело? #include <unistd.h> #include <sys/wait.h> #include <sys/types.h&…
11 апр '18 в 21:52
1
ответ
Почему epoll_wait() не реагирует на dup2(writable_fd, non_writable_fd)?
Давайте представим, что я добавил не доступный для записи fd в epoll watcher, чтобы ждать, когда он станет доступным для записи. epoll_ctl(epollfd, EPOLL_CTL_ADD, non_writable_fd, {EPOLLOUT}) non_writable_fd все еще не для записи и epoll_wait вернет…
14 янв '15 в 16:50
0
ответов
Почему dup2 должен быть атомарным? Что может произойти между close(oldFd) dup(newFd)?
В моем тесте операционных систем есть вопрос, в котором я не уверен: учитывая следующий код: int fd = open("File", O_RDWR); dup2(fd, 1); write(1, "Hi", 2); exit(0); (1) Как вы можете заменить вызов dup2() другими системными вызовами? Мой ответ: clos…
10 сен '16 в 15:12
1
ответ
Оболочка C: программа зависает у первого ребенка
Я создал C-оболочку, которая выполняет команды, введенные пользователем. Одним из требований для этой оболочки является то, что при обработке вызовов канала первый дочерний элемент направляет его вывод родительскому элементу через pipe1, где родител…
02 мар '19 в 14:55
1
ответ
Exec() читать из файла
Я работаю над созданием базовой оболочки. Я застрял при попытке получить exec() для чтения из входного файла. Вот что у меня есть. Я не уверен, какие аргументы я должен приводить execvp(). Здесь stringList[0] будет чем-то вроде "ls" или "cat". Если …
02 окт '15 в 18:35
1
ответ
Как я могу выполнить и записать в стандартный ввод и направить стандартный вывод в сокет?
Я пишу http-сервер для своего школьного проекта и пытаюсь выполнить скрипт CGI. Следующий код успешно выполняет программу cgi, и выходные данные программы отправляются в браузер, но что-то не так с тем, как я отправляю POST-данные. Вот что у меня ес…
05 фев '13 в 20:42
3
ответа
Закрыть дескриптор файла и затем использовать его
Ниже приведен фрагмент кода, который объясняет системный вызов dup2. Что я не понимаю, так это то, что после дублирования обоих файловых дескрипторов нам нужно закрыть старый файловый дескриптор. Поскольку дескриптор "out" теперь закрыт, как сообщен…
28 май '13 в 15:23
2
ответа
Мульти трубы в C висят
Я пытаюсь реализовать программу, которая будет запускать несколько цепочек команд оболочки: | --> cmd3 --> cmd4 --> cmd2-->| | --> cmd5 --> cmd6 -->|--> cmd7 | |--> cmd8 и так далее... #include <stdio.h> #include <…
21 авг '11 в 19:34
0
ответов
Когда я dup2 STDOUT он берет все свое содержимое
Я делаю снаряд (работает хорошо). Тем не менее, сейчас я пытаюсь реализовать перенаправление вывода. cat test1.txt > text2.txt, Если я запускаю команды без перенаправления, это работает отлично. Так что же мне не хватает в моем коде вывода перена…
07 окт '18 в 02:40
0
ответов
Piping/dup2() не работает должным образом (Реализация Unix Shell в C)
Сначала я опубликую свой код, а затем объясню проблему, с которой я столкнулся: #include <stdio.h> #include <sys/wait.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include <fcntl.h> #define MAX_A…
20 апр '18 в 20:07
1
ответ
Ошибка при использовании каналов и команды exec.Second не завершается
Код принимает команду в качестве ввода и выполняет ее. Трубы также обрабатываются. Проблема в том, что если я введу ls | grep x как команда. Процесс grep не завершается, и программа останавливается. Есть идеи. #include <stdio.h> #include <u…
10 ноя '12 в 18:23
1
ответ
Linux/C: перенаправление каналов в STDIN/STDOUT
У меня были проблемы с имитацией сценария оболочки "env | grep HOME" с помощью C-программы. Я обнаружил, что комментирование строки 29 решило эту проблему, но я не совсем уверен, почему! На другом вопросе я читал, что это произошло потому, что dup2(…
16 мар '14 в 03:24
2
ответа
Перенаправить FROM stderr в другой файловый дескриптор
Моя программа вызывает библиотечные функции, которые печатают в stderr. Я хочу вмешаться, чтобы все вызовы записи в файловый дескриптор #2 вместо этого отправлялись куда-то еще. Вот моя первая попытка: bool redirect_stderr (int fd) { return dup2 (2,…
23 фев '11 в 19:12
1
ответ
Использование Dup2 для перенаправления ввода и вывода
Я писал оболочку Unix на C, и я пытаюсь реализовать перенаправление ввода и вывода. Я использовал Dup2 для этого и могу сделать так, чтобы мой вывод перенаправлялся в файл, и мой ввод также перенаправлялся правильно. Тем не менее, после того, как я …
08 июл '13 в 01:24
8
ответов
Может кто-нибудь объяснить, что делает dup() в C?
Я знаю, что dup, dup2, dup3 "создают копию дескриптора файла oldfd" (из man-страниц). Однако я не могу переварить это. Как я знаю, файловые дескрипторы - это просто числа для отслеживания местоположения файлов и их направления (ввод / вывод). Не был…
22 окт '11 в 18:12
1
ответ
Перенаправить вывод безымянного канала в файл журнала в c
Я хочу перенаправить вывод безымянного канала в открытый файл журнала в c, но я не могу этого добиться, мой код выглядит так: close(fildes[1]); FILE * file = fopen(logfile, "w"); int fd = fileno(file); if (fd == -1) { bail_out(EXIT_FAILURE, strerror…
02 май '15 в 00:32
1
ответ
Обеспечить полный доступ через терминал для ребенка, пока он жив
Я использую fork() для запуска какой-то другой программы, например, "vim" или "man bash". Но в тот момент, когда я потерял контроль, я ничего не могу напечатать в vim, scroll или совсем. Итак, мой вопрос: как дать ребенку полный доступ через термина…
21 дек '13 в 08:11
0
ответов
Два канала в программе c и второй не работает должным образом
В настоящее время я делаю некоторые тесты с использованием каналов и вилок в C. Я пытаюсь скопировать поведение этой команды оболочки в моей программе: cat < test | wc Тестовый файл содержит только небольшой текст. Вот код моей программы: #includ…
01 май '15 в 13:43