информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеСтрашный баг в WindowsАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
А есть ли аналог fork() в Win16 Application? 04.06.01 20:48  Число просмотров: 854
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Собственно, нужно из основной программы создать еще один
> процесс и
> заслать его в бэкграунд (но так чтобы он глобальную область
> переменных видел). Я читал, что в WinAPI32 это вроде
> функция
> CreateProcess(...) делает. А вот в 16р не нашел
> чего-то...Может плохо искал.

для 16-битника - это WinExec, это я помню точно.
но навряд ли он разрешит разделять глобальные переменные, хотя для 16-бит это не проблема. для этой цели лучше объявить их в dll-ке. затем использовать маппинг.
но лучше, если тебе всего лишь нужен бакграунд работа, используй потоки, оды и переменные будут общими.
а подробнее узнай об этом в Help старых версиях С++
<programming>
А есть ли аналог fork() в Win16 Application? 04.06.01 20:13  
Автор: Xan Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Собственно, нужно из основной программы создать еще один процесс и
заслать его в бэкграунд (но так чтобы он глобальную область переменных видел). Я читал, что в WinAPI32 это вроде функция
CreateProcess(...) делает. А вот в 16р не нашел чего-то...Может плохо искал.
А есть ли аналог fork() в Win16 Application? 04.06.01 20:48  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Собственно, нужно из основной программы создать еще один
> процесс и
> заслать его в бэкграунд (но так чтобы он глобальную область
> переменных видел). Я читал, что в WinAPI32 это вроде
> функция
> CreateProcess(...) делает. А вот в 16р не нашел
> чего-то...Может плохо искал.

для 16-битника - это WinExec, это я помню точно.
но навряд ли он разрешит разделять глобальные переменные, хотя для 16-бит это не проблема. для этой цели лучше объявить их в dll-ке. затем использовать маппинг.
но лучше, если тебе всего лишь нужен бакграунд работа, используй потоки, оды и переменные будут общими.
а подробнее узнай об этом в Help старых версиях С++
А нету! 05.06.01 11:37  
Автор: prop Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Собственно, нужно из основной программы создать еще
> один
> > процесс и
> > заслать его в бэкграунд (но так чтобы он глобальную
> область
> > переменных видел). Я читал, что в WinAPI32 это вроде
> > функция
> > CreateProcess(...) делает. А вот в 16р не нашел
> > чего-то...Может плохо искал.
>
> для 16-битника - это WinExec, это я помню точно.
> но навряд ли он разрешит разделять глобальные переменные,
> хотя для 16-бит это не проблема. для этой цели лучше
> объявить их в dll-ке. затем использовать маппинг.
> но лучше, если тебе всего лишь нужен бакграунд работа,
> используй потоки, оды и переменные будут общими.
> а подробнее узнай об этом в Help старых версиях С++

Если я правильно помню, fork() порождает копию вызывающего процесса и начинает его выполнение со следующей за fork() команды.
В win16 используется корпоратиная многозадачность - нет ни процессов, ни потоков (в привычном смысле) - есть один процесс и один поток - все остальное - т. наз. задачи, которые получают сообщения, что-то делают, и возвращают управление. Не вернул управление - все остальные таски висят. С глобальными переменными проблем нет - global heap один на всю систему, поэтому указатель действителен во всех задачах.
А если маппинг это CreateFileMapping - то его в Win16 тоже нет.
Может я и наврал чего - давно это было...
А нету! 05.06.01 15:37  
Автор: Xan Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > > Собственно, нужно из основной программы создать
> еще
> > один
> > > процесс и
> > > заслать его в бэкграунд (но так чтобы он
> глобальную
> > область
> > > переменных видел). Я читал, что в WinAPI32 это
> вроде
> > > функция
> > > CreateProcess(...) делает. А вот в 16р не нашел
> > > чего-то...Может плохо искал.
> >
> > для 16-битника - это WinExec, это я помню точно.
> > но навряд ли он разрешит разделять глобальные
> переменные,
> > хотя для 16-бит это не проблема. для этой цели лучше
> > объявить их в dll-ке. затем использовать маппинг.
> > но лучше, если тебе всего лишь нужен бакграунд работа,
> > используй потоки, оды и переменные будут общими.
> > а подробнее узнай об этом в Help старых версиях С++
>
> Если я правильно помню, fork() порождает копию вызывающего
> процесса и начинает его выполнение со следующей за fork()
> команды.
> В win16 используется корпоратиная многозадачность - нет ни
> процессов, ни потоков (в привычном смысле) - есть один
> процесс и один поток - все остальное - т. наз. задачи,
> которые получают сообщения, что-то делают, и возвращают
> управление. Не вернул управление - все остальные таски
> висят. С глобальными переменными проблем нет - global heap
> один на всю систему, поэтому указатель действителен во всех
> задачах.
> А если маппинг это CreateFileMapping - то его в Win16 тоже
> нет.
> Может я и наврал чего - давно это было...

Понял, спасибо всем. И все-таки глупый вопрос.
А если я прость из WinMain() создам дочернее окно с помощью CreateWindow ну например как инвизибл или с нулевыми размерами. Понятно что оно не есть копия процесса, но для моих целей пойдет??? ( будет невидимым и зрячим на global heap).
<без заголовка> 05.06.01 16:20  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка>
Понял, спасибо всем. И все-таки глупый вопрос.
> А если я прость из WinMain() создам дочернее окно с помощью
> CreateWindow ну например как инвизибл или с нулевыми
> размерами. Понятно что оно не есть копия процесса, но для
> моих целей пойдет??? ( будет невидимым и зрячим на global
> heap).
Нет это из другой оперы.
Понятно что аналога fork() в Win16 нет ...есть WinExec(),
если хочешь поиметь совместный доступ к каким то переменным из многих
копий программы - сделай как рекомендовал kabanchik
а именно - создай DLL в которой обявлены все твои глобальные переменные а
потом экспортируй их. Потом загрузи DLL в своем exe и импортируй энти переменные ... подробности ищи в описании *.def файлов в хелпах для Win16
Но лучше конечно забить на "многоздачный, коопедаративный" динозавр - 16-бит :-))) 05.06.01 17:00  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Понимаешь, такой уж расклад в этот раз получился... 06.06.01 20:24  
Автор: Xan Статус: Незарегистрированный пользователь
<"чистая" ссылка>
корпоратиная многозадачность ??? 05.06.01 15:02  
Автор: - для корпоративных пользователей? :-))) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > > Собственно, нужно из основной программы создать
> еще
> > один
> > > процесс и
> > > заслать его в бэкграунд (но так чтобы он
> глобальную
> > область
> > > переменных видел). Я читал, что в WinAPI32 это
> вроде
> > > функция
> > > CreateProcess(...) делает. А вот в 16р не нашел
> > > чего-то...Может плохо искал.
> >
> > для 16-битника - это WinExec, это я помню точно.
> > но навряд ли он разрешит разделять глобальные
> переменные,
> > хотя для 16-бит это не проблема. для этой цели лучше
> > объявить их в dll-ке. затем использовать маппинг.
> > но лучше, если тебе всего лишь нужен бакграунд работа,
> > используй потоки, оды и переменные будут общими.
> > а подробнее узнай об этом в Help старых версиях С++
>
> Если я правильно помню, fork() порождает копию вызывающего
> процесса и начинает его выполнение со следующей за fork()
> команды.
> В win16 используется корпоратиная многозадачность - нет ни
> процессов, ни потоков (в привычном смысле) - есть один
> процесс и один поток - все остальное - т. наз. задачи,
> которые получают сообщения, что-то делают, и возвращают
> управление. Не вернул управление - все остальные таски
> висят. С глобальными переменными проблем нет - global heap
> один на всю систему, поэтому указатель действителен во всех
> задачах.
> А если маппинг это CreateFileMapping - то его в Win16 тоже
> нет.
> Может я и наврал чего - давно это было...
Это вероятно сильно развитая кооперативная многозадачность ... то есть когда кооператив "рога и копыта" вырастает до размеров корпорации "Золотой теленок" :))))) 05.06.01 15:18  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка>
:P)))))) 05.06.01 16:36  
Автор: prop Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach