Отправляет email-рассылки с помощью сервиса Sendsay

Сервер без видеокарты

Опять подвёл несчастный вентилятор на видеокарте. Пришла идея написать
вот такую программульку:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv)
{
nice(19);
FILE *f = fopen("/dev/tty1","rt");
if (f!=NULL)
{
fclose(f);
argv[0]="mingetty";
execvp(argv[0], argv);
} else while(1) sleep(0xFFFFFFFF);
return 0;
}

nice(19) пришлось добавить потому, что она отжирает процесорное время,
когда работает на сервере (ядро 2.4.31). На рабочей станции (ядро
2.6.11.7) c видеокартой работает как ожидалось - запускает mingetty.
А на сервере:
# gdb gettywrapper 1697
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
..
Attaching to program: /usr/sbin/gettywrapper, process 1697
Reading symbols from /lib/i686/libc.so.6...done.
Loaded symbols for /lib/i686/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
0x400c9fcf in sleep () from /lib/i686/libc.so.6
(gdb) bt
#0 0x400c9fcf in sleep () from /lib/i686/libc.so.6
#1 0x00000000 in ?? ()
(gdb) next
Single stepping until exit from function sleep,
which has no line number information.
...и до сих пор ждёт, пока кончится sleep. Т.е. как бы работает как
надо. Но почему тогда top показывает
Swap: 257000k av, 44536k used, 212464k free 15620k
cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU
COMMAND
1693 root 20 19 288 288 248 R N 14,8 0,2 2:50 0
gettywrapper
1695 root 20 19 288 288 248 R N 14,8 0,2 2:50 0
gettywrapper
1697 root 20 19 288 288 232 R N 14,8 0,2 2:09 0
gettywrapper
1692 root 20 19 288 288 248 R N 14,6 0,2 2:50 0
gettywrapper
1694 root 20 19 288 288 248 R N 14,6 0,2 2:50 0
gettywrapper
1696 root 20 19 288 288 248 R N 14,6 0,2 2:50 0
gettywrapper

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21734; Возраст листа: 795; Участников: 1439
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/444069

Ответить   Алексей Tue, 27 Sep 2005 11:03:17 +0800 (#444069)

 

Ответы:

Алексей пишет:

Ну послушай, ну почему ты так извращаешься? Ну стоит у меня БЕЗДИСКОВАЯ
станция, без ВИДЕОКАРТЫ, в inittab все ГЕТТИ закоментированы, поднят
sshd и все ПРЕКРАСНО работает !!!

ponyol# uptime
08:02:28 up 44 days, 14:00, 4 users, load average: 0.09, 0.06, 0.01

Ответить   Oleg Ponomarev Tue, 27 Sep 2005 08:04:01 +0300 (#444084)

 

Доброго времени суток, Oleg.

Это я разве извращаюсь? Вот на регистрирующе-диагностическом
устройстве для шахтной подъёмной установки (пром.комп под Linux + мой
софт) я действительно извращаюсь. Там у меня используется библиотека
allegro и весь GUI, сделанный вручную, унаследован со времён DOS +
Borland C 3.x. Работа с платами сбора данных - из UserMode напрямую
через порты. Впрочем, меня уже не в ту степь занесло... :)

Она доступна из инета? Если да, то напиши мне IP этой БЕЗДИСКОВОЙ
станции и готовь видеокарту. >:)

Ответить   Алексей Tue, 27 Sep 2005 18:59:08 +0800 (#444470)

 

Алексей пишет:

можно сказать что ПОНЕСЛО :)

я с удовольствием, но не доступна :(.

Ответить   Oleg Ponomarev Tue, 27 Sep 2005 18:26:34 +0300 (#444547)

 

В сообщении от 27 сентября 2005 07:03 Алексей написал(a):

...

Есть подозрение, что интервал в реализации sleep где-то
преобразуется в знаковое и становится -1.

если вам не обязательно ждать 135 с лишним лет :-),
попробуйте поставить интервал поменьше

Ответить   "Sergey B. Khvatov" Tue, 27 Sep 2005 11:41:56 +0400 (#444196)

 

В сообщении от 1127810516 секунд после начала Эпохи Sergey B. Khvatov
написал(а):

А лучше сделать так:

while (1) pause();

Ответить   Konstantin Korikov Tue, 27 Sep 2005 18:54:50 +0300 (#444651)

 

Доброго времени суток, Konstantin.

Уже сделано while(1) sleep(86400); и теперь работает как надо.

Ответить   Алексей Wed, 28 Sep 2005 18:10:40 +0800 (#445724)