Проблема SIGTTIN - PullRequest
       1

Проблема SIGTTIN

2 голосов
/ 11 августа 2011

Я написал пример программы для симуляции SIGTTIN.Это выглядит следующим образом:

// Some include files

void sigfn(int num)
{
   printf("\n SIGTTIN CAUGHT \n");
}  

int main()
{
    signal(SIGTTIN , sigfn);
    read(0, .., ..);
    write(1, .., ..);

    return 0;
}

Но когда я запускаю это на переднем плане, я получаю вывод, который печатает следующее в бесконечном цикле:чтение - системный вызов блокировки, но как мне его остановить?Я закрываю терминал прямо сейчас.Пожалуйста, помогите мне, как остановить это и почему это работает.

1 Ответ

1 голос
/ 11 августа 2011
#include <stdio.h>
#include <signal.h>

void sigfn(int num){
   printf("sigttin");                                                           
}

int main(){
   char c;

   signal(SIGTTIN,sigfn);

   read(0,&c,1);

   printf("%c\n",c);
   return 0;

}

Я не получаю бесконечный цикл при работе на переднем плане.Он делает то, что должен и блокирует, пока не будет чего читатьищи процесс и убивай его.

Вот что я сделал: В одной консоли:

$. / sim_ttin &

Тогда яоткрыл другую консоль и набрал:

$ps aux | grep sim_ttin
user     4350  6.0  0.0   1620   340 pts/0    S    22:58   0:00 ./sim_ttin

4350 - это пид.Просто убить

$ kill -9 4350

Позволяет проверить первую консоль:

insigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttinsigttins

1027 * [1] + Погиб ./sim_ttin
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...