control-d
От: _Punisher_ Россия  
Дата: 03.06.05 17:35
Оценка:
Риветик всем.

Ребята подскажите пожалуйста как в Linux моно отловить нажатие CNTRL+D?
Очень нуна.
Re: control-d
От: jazzer Россия Skype: enerjazzer
Дата: 03.06.05 17:46
Оценка:
Здравствуйте, _Punisher_, Вы писали:

_P_>Риветик всем.


_P_>Ребята подскажите пожалуйста как в Linux моно отловить нажатие CNTRL+D?

_P_>Очень нуна.

так это ж EOT
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: control-d
От: _Punisher_ Россия  
Дата: 03.06.05 18:06
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, _Punisher_, Вы писали:


_P_>>Риветик всем.


_P_>>Ребята подскажите пожалуйста как в Linux моно отловить нажатие CNTRL+D?

_P_>>Очень нуна.

J>так это ж EOT


Точно, ну и что дальше. Не совсем понятно. В смысле нельзя отловить или всетаки моно?
Re[3]: control-d
От: Аноним  
Дата: 03.06.05 21:08
Оценка:
Здравствуйте, _Punisher_, Вы писали:

_P_>Здравствуйте, jazzer, Вы писали:


J>>Здравствуйте, _Punisher_, Вы писали:


_P_>>>Риветик всем.


_P_>>>Ребята подскажите пожалуйста как в Linux моно отловить нажатие CNTRL+D?

_P_>>>Очень нуна.

J>>так это ж EOT


_P_>Точно, ну и что дальше. Не совсем понятно. В смысле нельзя отловить или всетаки моно?


Не очень понял задачу... если речь идет о том, чтобы драйвер пропустил CTL-D в аппликацию, man tcsetattr на предмет ICANON.
Re[4]: control-d
От: Murr Россия  
Дата: 04.06.05 09:39
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, _Punisher_, Вы писали:


_P_>>Здравствуйте, jazzer, Вы писали:


J>>>Здравствуйте, _Punisher_, Вы писали:


_P_>>>>Риветик всем.


_P_>>>>Ребята подскажите пожалуйста как в Linux моно отловить нажатие CNTRL+D?

_P_>>>>Очень нуна.

J>>>так это ж EOT


_P_>>Точно, ну и что дальше. Не совсем понятно. В смысле нельзя отловить или всетаки моно?


А>Не очень понял задачу... если речь идет о том, чтобы драйвер пропустил CTL-D в аппликацию, man tcsetattr на предмет ICANON.


Более ортогональным способом было бы перепрограммирование VEOF через тот же tcsetattr.

P.S. А что такое "аппликация"?
Re[5]: control-d
От: Sheridan Россия  
Дата: 06.06.05 08:11
Оценка:
Здравствуйте, Murr, Вы писали:

M>P.S. А что такое "аппликация"?


как я понял — "Приложение"
Не топайте пожалуйста ногами... Ламер я... Ла-мер.
Кстати, может занятся оффлайн клиентом rsdn.ru под линух? По подобию RSDN@Hom
Matrix has you...
Re[5]: control-d
От: _Punisher_ Россия  
Дата: 06.06.05 15:16
Оценка:
Здравствуйте, Murr, Вы писали:

M>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, _Punisher_, Вы писали:


_P_>>>Здравствуйте, jazzer, Вы писали:


J>>>>Здравствуйте, _Punisher_, Вы писали:


_P_>>>>>Риветик всем.


_P_>>>>>Ребята подскажите пожалуйста как в Linux моно отловить нажатие CNTRL+D?

_P_>>>>>Очень нуна.

J>>>>так это ж EOT


_P_>>>Точно, ну и что дальше. Не совсем понятно. В смысле нельзя отловить или всетаки моно?


А>>Не очень понял задачу... если речь идет о том, чтобы драйвер пропустил CTL-D в аппликацию, man tcsetattr на предмет ICANON.


M>Более ортогональным способом было бы перепрограммирование VEOF через тот же tcsetattr.


M>P.S. А что такое "аппликация"?



А примерчик можно. Если конечно вас не затруднит?
Re: control-d
От: pzz Россия https://github.com/alexpevzner
Дата: 27.06.05 21:40
Оценка:
_Punisher_ wrote:

> Ребята подскажите пожалуйста как в Linux моно отловить нажатие CNTRL+D?

> Очень нуна.

Для не-полноэкранной программы _не_ _нужно_. Полноэкранную программу ты
скорее всего будешь писать на каком-нибудь curses — он за тебе это и
сделает. Технически это достигается переводом терминала в сырой режим ввода.
Posted via RSDN NNTP Server 1.9
Re: control-d
От: aka50 Россия  
Дата: 28.06.05 06:52
Оценка:
Здравствуйте, _Punisher_, Вы писали:

_P_>Риветик всем.


_P_>Ребята подскажите пожалуйста как в Linux моно отловить нажатие CNTRL+D?

_P_>Очень нуна.

При CTRL-С посылается сигнал SIGINT.
При CTRL-D закрывается stdin.
Пример:
#include <sys/types.h>
#include <sys/time.h>
#include <sys/errno.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>


extern "C" void
sig_handler(int sig)
{
        printf("Gotcha: %d\n", sig);
        exit(1);
}

int
main(int, char**)
{
        struct timeval tv;
        int stdinfd = fileno(stdin);

        signal(SIGINT, &sig_handler);
        for(;;)
        {
                fd_set rfd;
                tv.tv_sec = 1;
                tv.tv_usec = 0;
                FD_ZERO(&rfd);
                FD_SET(stdinfd, &rfd);
                int rc = select(FD_SETSIZE, &rfd, 0, 0, &tv);
                if (rc == -1) 
                        if (errno != EINTR)
                                break;
                if (FD_ISSET(stdinfd, &rfd))
                {
                        char buf[128];
                        rc = read(stdinfd, buf, 128);
                        if (rc == 0) {
                                printf("CTRL-D\n");
                                break;
                        }
                }
        }
        return 0;
}
Re[3]: control-d
От: jazzer Россия Skype: enerjazzer
Дата: 28.06.05 14:01
Оценка:
Здравствуйте, _Punisher_, Вы писали:

_P_>Здравствуйте, jazzer, Вы писали:


J>>Здравствуйте, _Punisher_, Вы писали:


_P_>>>Риветик всем.


_P_>>>Ребята подскажите пожалуйста как в Linux моно отловить нажатие CNTRL+D?

_P_>>>Очень нуна.

J>>так это ж EOT


_P_>Точно, ну и что дальше. Не совсем понятно. В смысле нельзя отловить или всетаки моно?


Конечно, можно.
Это означает, что ты больше ничего не сможешь прочитать из STDIN.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.