The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"обработка прерываний в freeBSD 4.5 "
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"обработка прерываний в freeBSD 4.5 "  
Сообщение от upplex email(ok) on 15-Ноя-07, 13:01 
Добрый день. Надо при наступлении 2ого прерывания от клавиатуры вывести содержимое кореневого каталога. в freeBSD 4.5 при нажатии ctrl+c на экране появляется "^C", тогда как в openSuse 10 все ок. Как исправить? Препод говорил что проблема в sigsetjmp(obl,1); (не там поставил). Пробовал в другом месте поставить - результата нет( . Вот сама лаба:
#include <stdio.h>
#include <signal.h>
#include <setjmp.h>
#include <sys/wait.h>
#include <unistd.h>
#include <signal.h>
int a=20; //переменные для сортировки
int b=0;
int count=0;
int str=0;
char letter;
char endl;
int probel=0;
sigjmp_buf obl;
main()
{void sig_vec(); //процедура обработки прерываний
void sort();
signal(SIGINT, sig_vec); //при нажатии crtl+c запускается процедура sig_vec
system("who | tee b.txt");
sigsetjmp(obl,1);
sleep(2);
if (fork()==0)
{sort();
sigsetjmp(obl,1);}
else
b=0;
a=10;


}
void sig_vec()
{
count=count+1;
signal(SIGINT, sig_vec);
if (count==2)  // щелкнули 2 раза - вывели корневой каталог
  {system("ls /");
count=0;
}
siglongjmp(obl,1);
}


void sort()

{
        FILE *fp;

sigsetjmp(obl,1);
    if((fp = fopen("b.txt","r"))==NULL)

        {

        puts("cannot open file");
          

        }
         while( ((letter = fgetc(fp)) !=EOF))
         { while (letter!=' ')
            {letter=fgetc(fp);}
            while (letter==' ')
            {letter=fgetc(fp);}
             while (letter!=' ')
             {printf("%c",letter);
              letter=fgetc(fp);}
               while (letter!='\n')
               {letter=fgetc(fp);}
               printf("\n");
           }
}


Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "обработка прерываний в freeBSD 4.5 "  
Сообщение от upplex email(??) on 17-Ноя-07, 10:14 
Собственно, проблема была (есть) не в прерывании, а в команде sleep(2).
Во фрибсд во время "сна" программы можно писать команды, а в openSuse такого нет. поэтому и при нажатии ctrl+c выскакивает эти символы
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру