Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 1
Регистрация: 09.07.2016
Сообщений: 74

Write в переменную, а не на консоль из-за STDOUT_FILENO

30.04.2017, 13:54. Показов 2321. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой код, стыренный отсюда http://ru.manpages.org/pipe/2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int
main(int argc, char *argv[])
{
    int pipefd[2];
    pid_t cpid;
    char buf;
    if (argc != 2) {
        fprintf(stderr, "Использование: %s <string>\n", argv[0]);
        exit(EXIT_FAILURE);
    }
    if (pipe(pipefd) == -1) {
        perror("pipe");
        exit(EXIT_FAILURE);
    }
    cpid = fork();
    if (cpid == -1) {
        perror("fork");
        exit(EXIT_FAILURE);
    }
    if (cpid == 0) {    /* Потомок читает из канала */
        close(pipefd[1]);          /* Закрывает неиспользуемый конец для записи */
        while (read(pipefd[0], &buf, 1) > 0)
            write(STDOUT_FILENO, &buf, 1);
        write(STDOUT_FILENO, "\n", 1);
        close(pipefd[0]);
        _exit(EXIT_SUCCESS);
    } else {            /* Родитель пишет значение argv[1] в канал */
        close(pipefd[0]);          /* Закрывает неиспользуемый конец для чтения */
        write(pipefd[1], argv[1], strlen(argv[1]));
        close(pipefd[1]);          /* Читатель видит EOF */
        wait(NULL);                /* Ожидание потомка */
        exit(EXIT_SUCCESS);
    }
}
Интересует чтение из пайпа. В данном случае программа с помощью сигнатуры записывает всё в консоль, а можно ли записывать в переменную типа char* или string?
C++
1
2
        while (read(pipefd[0], &buf, 1) > 0)
            write(STDOUT_FILENO, &buf, 1);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2017, 13:54
Ответы с готовыми решениями:

При выводе на консоль, Write() не выводит то, что в кавычках
Всем привет! Только начал изучать с# Создаю класс но при выводе на консоль write не выводит то что в кавычках? using System; ...

Как поместить document.write('21'); по ссылке JS в PHP переменную
Здравствуйте! Есть не изменяемая ссылка CRM системы для отображения количества товара: &lt;script...

Как поместить document.write('21'); по ссылке JS в JavaScript переменную?
Здравствуйте! Есть не изменяемая ссылка CRM системы для отображения количества товара: &lt;script...

1
Почетный модератор
 Аватар для Humanoid
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
30.04.2017, 18:23
У вас buf - это и есть переменная. Вы в любом случае вначале читаете из пайпа в эту переменную, а потом из неё записываете в stdout.
Вы можете объявить вначале строку какой-то нужной длины:
C
1
char data[1024];
И потом просто дописывать туда данные:
C
1
2
3
4
5
int pos = 0;
while (read(pipefd[0], &buf, 1) > 0 && pos < (sizeof(data) - 2))  // проверяем, что бы не вылезти за пределы data. 2 байта зарезервированы для "\n\0"
    data[pos++] = buf;
data[pos++] = '\n';  // добавляем в конец перевод строки
data[pos] = '\0';  // добавляем признак конца строки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.04.2017, 18:23
Помогаю со студенческими работами здесь

Переменную в консоль
Здравствуйте! Есть реализация кода на шарпе. using System; using System.IO; using System.Diagnostics; public class Test { ...

Как вывести переменную в консоль
Помогите, пожалуйста, поставленную задачу решил, а вот в консоль значение вывести не могу... Как вывести то? data segment ; ...

Не могу вывести переменную типа int в консоль
Не могу вывести интовую переменную в консоль ( консоль не та которая от Visual , а которая от SFML) Пытался вывести так : ...

Как вывести переменную в консоль инициализированную SQL запросом из БД MS Access?
Господа, Выручайте, то ли я не очень, то ли лыжи по асфальту не едут=) Я начинающий, так что не судите строго. Вопрос в следующем: ...

Как корректно вывести на консоль переменную, содержащую элемент массива
public Flat getBestSpace() { double bestSpace = 0; Flat flatBestSpace = null; for (int i = 0; i &lt; flats.length;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru