Можно ли поймать SIGIO, приходящее с существующего чужого терминала?
Пример:
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <signal.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
void SigIOhandler(int sig) {
printf("SIGIO received\n");
}
int main() {
int pfd;
if ((pfd = open("/dev/pts/5", O_RDWR | O_NONBLOCK, 0666)) < 0) {
perror("Open pseudo device");
exit(1);
}
signal(SIGIO, SigIOhandler);
fcntl(pfd, F_SETFL, O_ASYNC | O_NONBLOCK);
sleep(10);
close(pfd);
return 0;
}
В этом случае при вводе/выводе в /dev/pts/5, он просто закрывается и сигнала, естественно, нет.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум locks (2014)
- Форум Чтение выхлопа процесса без ожидания его завершения (2019)
- Форум Системный вызов open() close() (2017)
- Форум Help! Почему вызов ioctl FIONREAD для файла /dev/random завершается неудачей?! (2003)
- Форум ptrace() и сигналы (2018)
- Форум non-blocking write (2011)
- Форум Системный вызов sendfile ??? (2008)
- Форум Семафоры (2005)
- Форум вопрос по функции select (2014)
- Форум как включить поддержку больших файлов? (2008)