ALTE DOCUMENTE
|
||||||||
UNIX Windows
UNIX Windows
UNIX
UNIX Windows
fork exec
UNIX Windows
Windows
UWIN CYGWIN
"...ты выбрал самый трудный путь для того, чтобы взобраться сюда. Иди за мной, я покажу тебе самый легкий путь"
Френк Херберт "Дюна"
UNIX Windows NT
UNIX UNIX
UNIX
UNIX Windows UNIX UNIX Windows
Windows UWIN
Norton Commander символ-разделитель каталогов. Да "Midnight Commander", - Norton UNIX.
UNIX UNIX
UWIN CYGWIN NUTCRACKER UWIN CYGWIN UNIX
Windows UNIX .
UNIX , а Windows используют HANDLE Windows, но в UNIX[4] дескрипторы упорядочены и предсказуемы. Напротив, HANDLE UNIX Windows txt
HANDLE Windows . Каждый процесс имеет собственную локальную таблицу, поэтому бессмысленно пытаться использовать HANDLE UNIX HANDLE UNIX-процессов (смотри рисунок 002.txt).
Рисунок 002.txt (показаны локальные таблицы HANDLE Windows UNIX
UNIX Windows UNIX exec exec fork и . Процесс-сын наследует все открытые файлы отца, сегмент данных и продолжает выполнение с той же самой точки, в которой завершился вызов fork fork UNIX if (fork()==0) exec("/bin/vi","/etc/passwd",0);
Windows CreateProcess действительно порождает новый процесс, не затирая текущий. При этом сохраняется возможность наследования всех обработчиков установкой флага bInheritHandles. Поэтому, функция CreateProcess fork exec fork Windows UNIX
UNIX fork Windows (suspend main EIP
exec CreateProcess exec UNIX exec exec CreateProcess exit
UNIX. Родительский процесс в качестве идентификатора получает индекс ячейки такой таблицы, содержащей настоящий идентификатор дочернего процесса. В результате появляется возможность «подменить» идентификатор «Процесса 1» на «Процесс 2» незаметно для родительского процесса. (Смотри рисунок 003.txt)
Windows UNIX - удобное средство межпроцессорного взаимодействия, своеобразный аналог программно-аппаратных прерываний. Механизм же сообщений, реализуемый Windows WM CLOSE Windows
while (GetMessage (&msg, NULL, 0, 0))
UNIX
Windows x Winwos NT (Event txt
kill
(heap блока памяти, и его размеров. Первые две никаких проблем не вызывают, но вот динамическое изменение размера - штука интересная. Легко уменьшить размер блока, но намного чаще программистам требуется его увеличить (для того кучи и задуманы, чтобы сначала запросить немножечко памяти, а по мере потребности требовать ее все больше и больше). А как поступить, если к концу одного блока вплотную примыкает следующий? UNIX адресов, то есть определенным образом отображает физические адреса на логические, создавая видимость непрерывности всего блока памяти, хотя на самом деле он состоит из множества беспорядочно разбросанных фрагментов. А вот Windows указатель начала блока. Программы Windows UNIX UNIX Windows на низком уровне функциями VirtualAlloc и VirtualFree.
Windows UNIX MS DOS UNIX MS DOS Windows UNIX
MS DOS Windows), задаваемый символами "\r\n", тогда как UNIX ожидает лишь одиночного символа "\n UNIX MS DOS Windows edit UNIX Perl
UNIX
MS DOS UNIX MS DOS используется конструкция ">nul" ("echo Это сообщение никогда не появится на экране >nul"), а в UNIX - ">/dev/null" ("echo Это сообщение никогда не появится на экране > /dev/null"). Другие примеры различий показаны в таблице 1
UNIX |
MS DOS |
|
/dev/tty |
Con |
|
/dev/stdin |
Con |
|
/dev/stdout |
Con |
|
/dev/null |
Nul |
|
/dev/fd |
B |
|
/dev/lp |
Com |
|
/dev/mod |
lpt |
MS DOS con console
UNIX чувствительна к регистру в именах файлов и допускает мирное сосуществование "myfile" и "MyFile" в одном каталоге. Кажется, единственный способ приучить к этому Windows UNIX txt
SOCK RAW IP
WINSOCK x Windows TCP IP
AF INET UNIX WINSOCK
UNIX Windows UWIN AT&T UNIX AT&T CYGWIN GNU[6]
UWIN можно получить бесплатно, посетив сайт автора - https://www.research.att.com/sw/tools/uwin/. Установленный UWIN : "UWIN has a set of popular shells like ksh (Kornshell) & tcsh (C shell) and more than 300 utilities like vi, ls, ps, grep, tail, uudecode/uuendecode, mailx, find, perl, awk, etc along with a vt100 terminal emulation. It also provides a Telnet server along with other inet daemons and utilities like telnet, ftp, rsh, rlogin, and their corresponding servers for Windows NT, enabling a user to remotely access the system over the network. Optional tools include the Apache Web-server and bind DNS server.
Software requirements Software requirements
UWIN Base toolkit + UWIN SDK
Microsoft Visual C/C++ 4.0 or higher or GNU C/C++ compiler
Microsoft Windows NT 4.0 or higher (Workstation or Server) or
Microsoft Windows 95/98
Hardware requirements Hardware requirements
Intel x86, Pentium, Pentium Pro and compatible systems
30-100MB of available hard-disk space
UWIN Apache WEB DNS Windows NT telnetd Windows NT .
GNU C C++ и отладчик gdb, или любой другой инструментарий - по выбору. Например, perl, awk, tcl.. да всего не перечислишь! Кстати, в UWIN wrapper Microsoft Visual C UNIX Soft Ice UNIX
UNIX UWIN UNIX Windows
в каталог "/reg" На рисунке 049 показано, как вывести на экран содержимое ветви реестра "HKEY_CURRENT_USER\Network\Persistent\H". Но этим возможности UWIN
UWIN UWIN C A B D E Windows C Windows Win Windows \\SERVER\C SERVER C mount
C:\Program Files\UWIN on / type FAT32 (ic,text,grpid,suid,rw)
C:\Program Files\Microsoft Visual Studio\vc98\ on /msdev type FAT32 (ic,text,grpid,suid,rw)
A: on /A type FAT (ic,text,grpid,suid,rw)
C: on /C type FAT32 (ic,text,grpid,suid,rw)
D: on /D type FAT32 (ic,text,grpid,suid,rw)
E: on /E type FAT32 (ic,text,grpid,suid,rw)
F: on /F type FAT32 (ic,text,grpid,suid,rw)
//SERVER/C on /H type FAT ()
/usr/bin on /bin type LOFS (ic,text,grpid,suid,rw)
/usr/lib on /lib type LOFS (ic,text,grpid,suid,rw)
/usr/etc on /etc type LOFS (ic,text,grpid,suid,rw)
/usr/dev on /dev type LOFS (ic,text,grpid,suid,rw)
/C/WINDOWS on /win type FAT32 (ic,text,grpid,suid,rw)
/C/WINDOWS/SYSTEM on /sys type FAT32 (ic,text,grpid,suid,rw)
/usr/proc on /proc type PROC (ic,text,grpid,suid,rw)
/usr/reg on /reg type REG (ic,text,grpid,suid,noexec,rw)
UWIN Windows notepad win readme txt win notepad C windows readme txt Windows сообщит: "Не удается найти файл C:windowsreadme.txt" (такая ситуация показана на рисунке 050):
Windows UNIX
UNIX UWIN t n
dev
$ ls /dev
clipboard ptyp0 ptyq7 tty06 tty29 ttypb
fd ptyp1 ptyq8 tty07 tty30 ttypc
fd0 ptyp2 ptyq9 tty08 tty31 ttypd
fd1 ptyp3 ptyqa tty09 tty32 ttype
lp ptyp4 ptyqb tty10 tty33 ttypf
lp0 ptyp5 ptyqc tty11 tty34 ttyq0
lp1 ptyp6 ptyqd tty12 tty35 ttyq1
lp2 ptyp7 ptyqe tty13 tty36 ttyq2
mod0 ptyp8 ptyqf tty14 tty37 ttyq3
mod1 ptyp9 rmt0 tty15 tty38 ttyq4
mod2 ptypa rmt0n tty16 tty39 ttyq5
mod3 ptypb rmt1 tty17 tty40 ttyq6
mod4 ptypc rmt1n tty18 ttyp0 ttyq7
mod5 ptypd stderr tty19 ttyp1 ttyq8
mod6 ptype stdin tty20 ttyp2 ttyq9
mod7 ptypf stdout tty21 ttyp3 ttyqa
mt0 ptyq0 tty tty22 ttyp4 ttyqb
mt0n ptyq1 tty00 tty23 ttyp5 ttyqc
mt1 ptyq2 tty01 tty24 ttyp6 ttyqd
mt1n ptyq3 tty02 tty25 ttyp7 ttyqe
null ptyq4 tty03 tty26 ttyp8 ttyqf
ptmx ptyq5 tty04 tty27 ttyp9 windows
ptymx ptyq6 tty05 tty28 ttypa
clipboard Windows UWIN fd mount lp lp LPT lp LPT 2) в зависимости от схемы подключения ("cp myfile lp1"). Последовательный (т.е. COM mod" и может использоваться для управления модемом (например "echo atz\natdp 02 > mod1"); "mt SCSI Type Driver[9] SCSI UWIN
UWIN POSIX DLL AST x DLL POSIX UNIX fork exec malloc UNIX AST x гораздо скромнее - это всего лишь аналог стандартной библиотеки Си "stdio", написанной с учетом особенностей эмуляции UNIX
UWIN («UWIN maintains an open file table in a memory-mapped region, which is shared by all the currently active UWIN processes; this region is writable by all UWIN processes so that the appropriate information can be shared between them»). (Смотри рисунок 006.txt) Отсюда следует, одно UWIN UWIN
UWIN Windows Explorer UIWN
UINX CYGWIN UWIN
CYGWIN UNIX cygwin dll UNIX Windows UNIX cat etc passwd[10] UWIN CYGWIN
UWIN
$ cat /etc/passwd
root:x:0:13:Built-in account/domain:/tmp:/usr/bin/ksh
telnetd:x:1:1:telnetd:/:/dev/null
CYGWIN
$ cat /etc/passwd
/etc/passwd: No such file or directory
CYGWIN "/etc/passwd" и он не эмулирует подсистему безопасности UNIX UWIN UWIN CYGWIN
CYGWIN telnet CYGWIN UWIN ("...creates shared memory areas... used to keep track of open file descriptors and assist fork and exec, among other purposes" fork ("...creates a suspended child process using the Win32 CreateProcess call; next... fills in the child's .data and .bss sections by copying from its own address space into the suspended child's address space"). exec приводит к образованию нового процесса и подмене идентификаторов в локальной таблице эмулятора -"...exec present their own set of difficulties Because there is no way to do an actual exec under Win32, Cygwin has to invent its own Process IDs"
UNIX CYGWIN UWIN UWIN Mortal Commander . Между тем, он идеально подходит для демонстрации многих примеров, приведенных в этой книге.
CYGWIN - "The current release includes all POSIX calls except for setuid and mkfifo all ANSI C standard calls and many common BSD and SVR services including Berkeley sockets IP CYGWIN
осветить его новым светом, может устрашить. Мы не хотим, чтобы наши представления изменялись; нам кажется, что требовать этого, значит, угрожать нам. "Все важное мне уже известно!" - кричим мы. И тут приходит Изменяющий и выбрасывает все наши представления прочь - словно ненужный мусор.
|