Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск нескольких терминалов 
:(
    Опции темы
UserNet
Дата 29.10.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 13.12.2006
Где: Новосибирск

Репутация: нет
Всего: 3



Доброго времени суток, суть вопрос вот в чём есть код.
Код

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>

extern char **environ;

void sigcatch(int n)
{
    printf("\033[=7F");
    printf("\033[2J");
    printf("\033[2;2H");
    printf("\033[?25h");
    exit(n);
}

int main(int argc, char *argv[])
{
    int x=0,y=0;
    
    printf("\033[2J");
    printf("\033[?25l");

    signal(SIGINT, sigcatch);
    while(1)
    {
        printf("\033[=%dF",atoi(argv[4]));
        printf("+");
        fflush(stdout);
        usleep(atoi(argv[1]));
        printf("\033[%d;%dH",y,x);
        printf(" ");
        x += atoi(argv[2]);
        y += atoi(argv[3]);
        if (x == 80) x = 0;
        if (y == 25) y = 0;
    }
    return 1;    


Как осуществить запуск с одного терминала, вывод на другой?
PM MAIL   Вверх
MAKCim
Дата 29.10.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Код

int fd = open(<ПУТЬ К ТЕРМИНАЛУ>, O_WRONLY);
dup2(fd, STDOUT_FILENO);



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
UserNet
Дата 30.10.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 13.12.2006
Где: Новосибирск

Репутация: нет
Всего: 3



 Неполучается. 
Код


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>

extern char **environ;

void sigcatch(int n)
{
    printf("\033[=7F");
    printf("\033[2J");
    printf("\033[2;2H");
    printf("\033[?25h");
    exit(n);
}

int main(int argc, char *argv[])
{
    int x=0,y=0;
    

    int fd = open("/dev/ttyp2", O_WRONLY);//fd=3;значит ошибки нет.
    dup2(fd, STDOUT_FILENO);

    printf("\033[2J");
    printf("\033[?25l");

    signal(SIGINT, sigcatch);
    while(1)
    {
        printf("\033[=%dF",atoi(argv[4]));
        printf("+");
        fflush(stdout);
        usleep(atoi(argv[1]));
        printf("\033[%d;%dH",y,x);
        printf(" ");
        x += atoi(argv[2]);
        y += atoi(argv[3]);
        if (x == 80) x = 0;
        if (y == 25) y = 0;
    }
    return 1;    



Программа говорит Memory fault.
PM MAIL   Вверх
MAKCim
Дата 30.10.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(UserNet @  30.10.2008,  14:10 Найти цитируемый пост)
Программа говорит Memory fault. 

в каком месте кода?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Бонифаций
Дата 30.10.2008, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



а почему просто не переназначить на другой tty средствами os?

типа 

./yourprogram >/dev/tty11




--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
UserNet
Дата 30.10.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 13.12.2006
Где: Новосибирск

Репутация: нет
Всего: 3



Цитата

в каком месте кода?

На dup2,ещё вопрос, терминал, должен быть запущен как я понимаю?
PM MAIL   Вверх
UserNet
Дата 30.10.2008, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 13.12.2006
Где: Новосибирск

Репутация: нет
Всего: 3



Блин, моя ошибка, всё исправил, единственное ограничение, что терминал должен быть запущен, можно как-то это исправить?

Это сообщение отредактировал(а) UserNet - 30.10.2008, 18:58
PM MAIL   Вверх
MAKCim
Дата 30.10.2008, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(Бонифаций @  30.10.2008,  16:47 Найти цитируемый пост)
а почему просто не переназначить на другой tty средствами os?

средставми шелла  smile 

Цитата(UserNet @  30.10.2008,  18:57 Найти цитируемый пост)
единственное ограничение, что терминал должен быть запущен, можно как-то это исправить?

в каком плане запущен?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
UserNet
Дата 30.10.2008, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 13.12.2006
Где: Новосибирск

Репутация: нет
Всего: 3



Цитата

в каком плане запущен?

Может я что-то путаю в понятиях, но когда терминал, всего один ttyp0, а отображение терминала в ttyp1, это терминала допустим нет, он не отображён(запущен), тогда нет, отображения на том терминале.
Для работы программы, мне надо наличие двух терминалов, с ttyp0 и ttyp1.
Как-то так.
PM MAIL   Вверх
MAKCim
Дата 30.10.2008, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(UserNet @  30.10.2008,  22:31 Найти цитируемый пост)
Для работы программы, мне надо наличие двух терминалов, с ttyp0 и ttyp1.

ну и?
я не понимаю в чем вопрос?

Цитата(UserNet @  29.10.2008,  15:24 Найти цитируемый пост)
Как осуществить запуск с одного терминала, вывод на другой? 

через dup2()
а куда вы конкретно будете выводить уже зависит от постановки задачи и от входных данных
тут вам ничем не помогут


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
UserNet
Дата 30.10.2008, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 13.12.2006
Где: Новосибирск

Репутация: нет
Всего: 3



Как сделать так, что бы у меня был один терминал ttyp0, я запускаю программу, и появляется второй терминал.
PM MAIL   Вверх
MAKCim
Дата 31.10.2008, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(UserNet @  30.10.2008,  23:16 Найти цитируемый пост)
Как сделать так, что бы у меня был один терминал ttyp0, я запускаю программу, и появляется второй терминал. 

запустить, например, gnome-terminal, konsole, и т. д
они автоматически создадут /dev/pty/*


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
UserNet
Дата 31.10.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 13.12.2006
Где: Новосибирск

Репутация: нет
Всего: 3



Цитата

запустить, например, gnome-terminal, konsole, и т. д
они автоматически создадут /dev/pty/*

Можно ли это сделать это программно?
PM MAIL   Вверх
xvr
Дата 1.11.2008, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(UserNet @ 31.10.2008,  19:23)
Цитата

запустить, например, gnome-terminal, konsole, и т. д
они автоматически создадут /dev/pty/*

Можно ли это сделать это программно?

Сильный вопрос, прямо не знаю, что и сказать  smile 
Код

system("gnome-terminal &");

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0834 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.