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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

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

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

Оффлайн _art_

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

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

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

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


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

Оффлайн renzrv

  • Старожил
  • *
  • Сообщений: 1805
    • Просмотр профиля
Попробуй expect
(Нажмите, чтобы показать/скрыть)
Скрипты на bash,sh,perl,awk + разная помощь (в ЛС)

Оффлайн _art_

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

Оффлайн AnrDaemon

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

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

Оффлайн _art_

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

Оффлайн Azure

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

Оффлайн _art_

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

Код:
#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, 18:11:28 от _art_ »

 

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