Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Ввод числа в программу через индекснй дескриптор  (Прочитано 903 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн _art_

  • Автор темы
  • Активист
  • *
  • Сообщений: 377
    • Просмотр профиля
Привет,

не знаю куда адресовать мой вопрос - пишу сюда.

Есть простенькая программа на C, которая запрашивает ввод числа.
Вопрос в том, как передать это число в эту программу через файловый дескриптор ?
То есть _не_ перед запуском, а уже в процессе её выполнения, когда она запрашивает ввод.

Перейдя в нужную папку процесса и сделав
echo -ne "123\n" > 0
происходит посылка числа(вижу, что число появилось на экране), но Enter, то есть непосредственный ввод, не отправляется.


Подскажите, как это можно сделать ?
« Последнее редактирование: 15 Июля 2017, 12:42:30 от _art_ »

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Попробуй expect
(Нажмите, чтобы показать/скрыть)

Оффлайн _art_

  • Автор темы
  • Активист
  • *
  • Сообщений: 377
    • Просмотр профиля
Да, про expect в курсе. Но это немного не то.
Я хочу именно одной командой это выполнить через посылку в файловый дескриптор(если такое вообще возможно ?).
« Последнее редактирование: 15 Июля 2017, 13:01:18 от _art_ »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Только если программа целенаправленно написана с такой поддержкой.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн _art_

  • Автор темы
  • Активист
  • *
  • Сообщений: 377
    • Просмотр профиля
И что же должно быть в самой программе для такой поддержки ?

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
передать это число в эту программу через файловый дескриптор ?
То есть _не_ перед запуском, а уже в процессе её выполнения, когда она запрашивает ввод.
Сформулируйте более понятно что именно Вы хотите сделать, а лучше пример кода… Потому что когда команда запрашивает ввод, то Вы его вводите. Почему это надо делать через «файловый дескриптор», а не просто записать в файл, например, и с него считать?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн _art_

  • Автор темы
  • Активист
  • *
  • Сообщений: 377
    • Просмотр профиля
передать это число в эту программу через файловый дескриптор ?
То есть _не_ перед запуском, а уже в процессе её выполнения, когда она запрашивает ввод.
Сформулируйте более понятно что именно Вы хотите сделать, а лучше пример кода… Потому что когда команда запрашивает ввод, то Вы его вводите. Почему это надо делать через «файловый дескриптор», а не просто записать в файл, например, и с него считать?

Код:
#include<stdlib.h>
#include<stdio.h>

int sum(int *a, int *b);

int main(void)
{
        int var1 = 7,
            var2 = 4;

        printf("7+4 = %d \n", sum(&var1, &var2));

        printf("after var1 = %d \n", var1);

        int num;

        printf("Enter number : ");
        scanf("%d", &num);

        printf("You entered : %d \n", num);

        return 0;
}

int sum(int *a, int *b)
{
        *a += 3;
        return *a + *b;
}


После запуска ожидаем ввод:
7+4 = 14
after var1 = 10
Enter number :


Потом посылаем число через дескриптор, как описывал выше.

> Почему это надо делать через «файловый дескриптор», а не просто записать в файл, например, и с него считать?
Просто интересует такая возможность. Почему нет ? Для этого ведь дескрипторы и были созданы ?
« Последнее редактирование: 16 Июля 2017, 17:11:28 от _art_ »

 

Страница сгенерирована за 0.05 секунд. Запросов: 25.