LINUX.ORG.RU

Пехерват сигналов

 ,


0

2

Добрый день, все еще пишу на си реализацию терминала. И столкнулся с проблемой реализации вырезать/копировать/вставить. дело в том что на ^Y(вставить) программа завершает работу, а функцией signal у меня не получается перехватить. Подскажите пожалуйста как это можно сделать + как ловить другие сигналы ^+U ^+W esc+W?

вот список разрешенных функций

◦ malloc, free ◦ access ◦ open, close, read, write ◦ opendir, readdir, closedir ◦ getcwd, chdir ◦ stat, lstat, fstat ◦ fork, execve ◦ wait, waitpid, wait3, wait4 ◦ signal, kill ◦ exit ◦ pipe ◦ dup, dup2 ◦ isatty, ttyname, ttyslot ◦ ioctl ◦ getenv ◦ tcsetattr, tcgetattr ◦ tgetent ◦ tgetflag ◦ tgetnum ◦ tgetstr ◦ tgoto ◦ tputs

diosio ()
Ответ на: вот список разрешенных функций от diosio

Re: вот список разрешенных функций

tcsetattr

Ну так самое главное. cfmakeraw только проставляет нужные флаги в структуре, это можно и напрямую сделать, а потом с этими флагами через tcsetattr режим raw и устанавливается. Найти исходник cfmakeraw и посмотреть, какие флаги нужны, и copy-paste в свой код.

anonymous ()

мне нельзя этой функцией пользоваться по заданию

Терпеть не могу такие задания. Из серии «трахнитесь с женщиной, но не на кровати, а в гамаке, и не лежа, а стоя на одной ноге».

Обычно такие задания препод высасывает из пальца, когда ищет, чем бы занять академические часы скубентов. И чем забористее велосипед, тем илитарнее он выглядит в глазах наивных скубентов. Опять таки, если содержание курса и/или качество преподавания ни в какие ворота, всегда можно объявить результаты решения дурацкой задачи, и им как бы неявно намекать недовольным скубентам: мол, вот же, один чел из группы решил, а вы не решили, так что чего вы тут на меня бочку катите, тупые вы просто, ни задачки решить не можете, ни гениальности курса понять…

seiken ★★★★★ ()
Ответ на: комментарий от diosio

Там нет преподов

Оно и видно. Ибо не только ^W - это не сигнал, а комбинация на клавиатуре, выдающая байт со значением меньше пробела, но даже ^C - не сигнал, а символ, общепринятый в каноничном режиме для генерации сигнала прерывания. В этом режиме можно назначить только intr-kill-quit сигналов (ещё два других - не перехватываемые), но на любые символы.

vodz ★★★★★ ()
Ответ на: комментарий от seiken

Обычно такие задания препод высасывает из пальца

Правильно написал. Мне тут недавно подсунули задачку по теореме Ферма. И оказывается что я не сама тут тупая.

Liz812 ()