[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: O, cmake/ Забыть: Dropbox своими руками



On 2012.12.12 at 16:40:16 +0600, Dmitry Fedorov wrote:

> 12 декабря 2012 г., 17:33 пользователь Victor Wagner написал:
> > On 2012.12.12 at 16:21:39 +0600, Dmitry Fedorov wrote:
> >
> >> Почти все программы запускаются посредством fork + exec.
> >> Остальные - exec.
> >> Других способов нет.
> >
> > Есть. Шелловская команда точка. Если "программой" является скрипт на том
> 
> Не является.
> Программа - то, что выполняется самим CPU.
> Скрипты "выполняются" программами их интерпретаторов,

ld-linux.so с точки зрения ядра является "интерпретатором"
эльф-бинарников. Потому что прежде чем можно будет передать управление
на содержащийся в ней двоичный код, нужно проделать дохрена
подготовительных операций вроде подгрузки динамических библиотек, иногда
патченья адресов переходов

Кстати, до недавнего времени можно было (не знаю, пофиксили или нет)
обойти флаг noexec при монтировании файловой системы, запуская 

/lib/ld-linux.so.2 /path/to/filesystem/with/no/exec/binary



> но не непосредственно процессором. То есть, скрипт - не программа.
> Ну кому я объясняю!

Это не объяснени, это чушенесениe

И пользователю, и системному вызову exec глубоко пофиг, будет программа
выполняться непосредственно или с помощью интерпретатора. 
C точки зрения этого саомого вызова exec #! - вполне валидный magic
number для исполняемого файла.

Кстати, есть
разные промежуточные варианты, компиляция байткод (как в питоне перле и
т,д), компиляция в машинно-независимое бинарное представление (как в
Java), компиляция машинно-независимого представления в родные команды
процессора непосредственно в момент исполнения (JIT-компиляция в той же Java).


Reply to: