LINUX.ORG.RU

Вопросы по С++


0

0

1. Есть ли поддержка отображения файла на память 2. Можно ли динамически (во время работы программы) создавать код и выполнять его из программы на C++ (Что-то типа eval).

anonymous

по существу:
1. есть. см mmap()

----------------------------------
USAGE
The mmap() function allows access to resources using address
space manipulations instead of the read/write interface.
Once a file is mapped, all a process has to do to access it
is use the data at the address to which the object was
mapped.
Consider the following pseudo-code:

fildes = open(...)
lseek(fildes, offset, whence)
read(fildes, buf, len)
/* use data in buf */

The following is a rewrite using mmap():

fildes = open(...)
address = mmap((caddr_t) 0, len, (PROT_READ | PROT_WRITE),
MAP_PRIVATE, fildes, offset)
/* use data at address */

The mmap() function has an explicit 64-bit equivalent. See
interface64(5).

SEE ALSO
close(2), exec(2), fcntl(2), fork(2), getrlimit(2), mpro-
tect(2), munmap(2), shmat(2), lockf(3C), mlockall(3C),
msync(3C), plock(3C), sysconf(3C), interface64(5)
----------------------------------

2. ты про перл - забудь;) на си можно делать вещи поинтереснее;)
а код создавать и выполнять можно, только это все _полностью_ ручками делать нужно: формироавать автокод (бинарный исполняемый код) передавать на него выполнение, возвращать из него результат и т.п.
примеры:
- удаленный взлом rlogin с получением root'овых полномочий,
- полиморфные (самомодифицирующиеся) вирусы и т.п.

proff
()

большое спасибо

anonymous
()

Не слушай оголтелых сишников-извращенцев. Тебе нужен ембедабельный скриптовый язык. К примеру, Tcl.

Antichrist
()

Небольшое уточнение

Автокод - это не бинарный двоичный код. Автокодами назывались ассемблероподобные (и не только) языки (и компиляторы) на старых отечесвенных ЭВМ. Потом это название отмерло во время массового перехода на ЕС ЭВМ.

2Anti...: Перечитай заголовок. Написано "Вопросы по С++". Есть что ответить НА ЭТИ вопросы?

kraw ★★★★
()
Ответ на: Небольшое уточнение от kraw

Какая на фиг разница, ++, не ++. Когда возникают такие потребности, всегда из C/C++/чего-попало-ещё пользуют ембедабельный язык. При чём, ембедабельным языком может быть даже C++, см. на CINT: http://root.cern.ch/root/Cint.html

Antichrist
()
Ответ на: комментарий от Antichrist

2Antichrist:
1. спасибо за ссылочку на CINT (C/C++ interpreter). Занятная штучка;)
2. в среде сишников не больше извращенцев, чем в любой другой среде, так что не корректно на них наезжать таким образом;)

2kraw: по-моему то ты не совсем прав, у слова "автокод" существует много значений, и, на мой взгляд, одно из них - это как раз "двоичный исполняемый код". хотя, на самом деле, не суть важно, что как называть, лишь бы было понятно всем сторонам.

proff
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.