The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Запуск приложения из C"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Запуск приложения из C"
Сообщение от als emailИскать по авторуВ закладки on 11-Апр-03, 17:00  (MSK)
Доброе время!
Переделываю программу на С (юзаю FreeBSD 4.5)
Из программы надо запустить другое приложение.
Незнаю как это сделать :(
Самое печальное, даже не представляю где об этом можно почитать :((
Люди добрые, помогите глупому ...
пожалуйста.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Запуск приложения из C"
Сообщение от XMan emailИскать по авторуВ закладки on 11-Апр-03, 19:18  (MSK)
man exec
?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Запуск приложения из C"
Сообщение от als emailИскать по авторуВ закладки on 12-Апр-03, 13:47  (MSK)
>man exec
>?
видел, смутило то, что это builtin shell commands.
Разве компилятор их съест?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Запуск приложения из C"
Сообщение от x33 emailИскать по авторуВ закладки on 12-Апр-03, 15:59  (MSK)
man 3 exec =)
функции execl, execlp, execle, exect, execv, execvp - execute a file

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Запуск приложения из C"
Сообщение от als emailИскать по авторуВ закладки on 22-Апр-03, 09:54  (MSK)
>man 3 exec =)
>функции execl, execlp, execle, exect, execv, execvp - execute a file

попробывал.
результ немного не понятен.
В первой программе (та которая вызывает) применил execv.
Вызываемая программа действительно отрабатывает, но первая закрывается со словами cmd read returned 0, expecting 5
Что-то видимо не так.
смущает фраза в man'e
The exec family of functions replaces the current process image with a
new process image.
Получается, что новый процесс замещает старый, а мне бы что бы старый продолжал работать.
Как это можно сделать?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Запуск приложения из C"
Сообщение от rnl Искать по авторуВ закладки on 22-Апр-03, 11:49  (MSK)
если совсем просто, но небезопасно, то man system.
Если хоть какая-то безопасность все-таки нужна, то все те же exec функции, только перед их вызовом делать fork и уже в рожденном детишке exec.

>Получается, что новый процесс замещает старый, а мне бы что бы старый
>продолжал работать.
>Как это можно сделать?


  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Запуск приложения из C"
Сообщение от bug emailИскать по авторуВ закладки on 26-Апр-03, 21:20  (MSK)
>если совсем просто, но небезопасно, то man system.
>Если хоть какая-то безопасность все-таки нужна, то все те же exec функции,
>только перед их вызовом делать fork и уже в рожденном детишке
>exec.
>
>>Получается, что новый процесс замещает старый, а мне бы что бы старый
>>продолжал работать.
>>Как это можно сделать?

есть такая функция system() если ее использовать то после выполнения нового процесса старый продолжит выполнятся.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Запуск приложения из C"
Сообщение от Breeze Искать по авторуВ закладки on 22-Апр-03, 13:15  (MSK)
В UNIX'ах для запуска процессов используется связка fork-exec.
сначала fork - создает копию родительского процесса и эта копия делает exec и замещает свой код.
Про это во всех книжках написано. :) Лучше почитай. Там есть ньюансы. Читать лучше Робачевского ("книга с черепашкой" - у нас на кафедре уже легендарна :))
  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Запуск приложения из C"
Сообщение от als emailИскать по авторуВ закладки on 24-Апр-03, 08:03  (MSK)
Спасибо всем.
Все получилось, мне вполне хватило system.
Еще раз спасибо.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Запуск приложения из C"
Сообщение от alexhack emailИскать по авторуВ закладки on 28-Апр-03, 08:08  (MSK)
>Доброе время!
>Переделываю программу на С (юзаю FreeBSD 4.5)
>Из программы надо запустить другое приложение.
>Незнаю как это сделать :(
>Самое печальное, даже не представляю где об этом можно почитать :((
>Люди добрые, помогите глупому ...
>пожалуйста.

Народ, а подскажите плиз как реализовать вариант использования fork() под OpenVMS for Alpha, очень надо. Примеры если можно, хочется сразу отметить, что под эту ОС я нашел только функцию v_fork(), но работают они по разному из-за специфики самой ОС. А можно ли все таки, в исходниках Apache ничего не нашел, может кто подскажет.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Запуск приложения из C"
Сообщение от Ruslan R. Laishev emailИскать по авторуВ закладки on 05-Май-03, 13:26  (MSK)
Привет!

>Народ, а подскажите плиз как реализовать вариант использования fork() под OpenVMS for
>Alpha, очень надо. Примеры если можно, хочется сразу отметить, что под
>эту ОС я нашел только функцию v_fork(), но работают они по
>разному из-за специфики самой ОС. А можно ли все таки, в
>исходниках Apache ничего не нашел, может кто подскажет.
Аналога forka() нету в VMS-е если не считать vfork(), есть несколько вариантов порождения процесса или подпроцесса, скажите общие потребности - я присоветую.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Запуск приложения из C"
Сообщение от alexhack emailИскать по авторуВ закладки on 05-Май-03, 17:00  (MSK)
>Привет!
>
>>Народ, а подскажите плиз как реализовать вариант использования fork() под OpenVMS for
>>Alpha, очень надо. Примеры если можно, хочется сразу отметить, что под
>>эту ОС я нашел только функцию v_fork(), но работают они по
>>разному из-за специфики самой ОС. А можно ли все таки, в
>>исходниках Apache ничего не нашел, может кто подскажет.
> Аналога forka() нету в VMS-е если не считать vfork(), есть несколько
>вариантов порождения процесса или подпроцесса, скажите общие потребности - я присоветую.
>

Есть программа обычная, использующая fork(). Значит fork нет?
Дело все в том, что в просторах инета я нашел аналог fork(), через реализацию posix threads.

Так же хотелось бы узнать ваше мнение по поводу
этой статьи

http://kuhub.cc.ku.edu/www/html/721final/6537/6537pro_009.html
Раздел 3.9.2 SYS$POSIX_FORK_CONTROL System Service

Потом нашел еще вот эту статью
http://www.opus1.com/vmsdoc/progtool/cpqc64/5763p022.htm
в которой расказывается, что можно использовать pipe для обмена данными.

Также кажется есть еще один аналог
http://h71000.www7.hp.com/doc/73final/6493/6101pro_013.html
используя pthread_atfork

В последней и кажется в первой статье речь идет все таки об использовании POSIX fork(). Но тогда, что надо поставить, чтобы этот fork() при сборке программы нашелся? И к чему тогда первая статья.

Конечно, понятно, что можно сделать сначала vfork, как я понял подгатавливает место для будущего процесса, а потом запихиваешь через exec туда другой.

Интересно, конечно было бы ваше мнение все таки по статьям.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "Запуск приложения из C"
Сообщение от SysMan emailИскать по авторуВ закладки on 06-Май-03, 13:27  (MSK)
>Есть программа обычная, использующая fork(). Значит fork нет?
Нет.

>Дело все в том, что в просторах инета я нашел аналог fork(),
>через реализацию posix threads.
http://starlet.deltatel.ru/disk$axpdocsep001/opsys/vmsos721/6493/6101pro_013.html#pt_atfork
This routine is for DIGITAL UNIX systems only.

>Интересно, конечно было бы ваше мнение все таки по статьям.
Честно говоря, мне хотелось бы понять первичную цель. Механического порта кода с fork-ом не получиться, это очевидно. Под OpenVMS 7.0 и выше можно пользовать для простоты PIPE(s) - это метод грубый и обычно не пользуется VMS-никами, однако для униходиов може быть единственно понятным. Это порождение подпроцесса с DCL и выдача команд в поток, и получения в зад потока вывода.

Что вам-то требуется?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Запуск приложения из C"
Сообщение от alexhack emailИскать по авторуВ закладки on 06-Май-03, 14:31  (MSK)
Спасибо, что просветили по поводу потоков. Я не мог понять для OpenVMS они  или для DEC-овского UNIX-a. Кстати, потоки поддерживаются в OpenVMS? хотя бы в 7.3?

Проблема конечно не моя, но меня очень интересует, как она понимается или решается в рамках VMS (кажется, решили ее как раз именно так, через dcl скрипт). Программа была простая, делался fork, один слушал интернет, а другой пинговал интернет. На другой vms запускался такой же процесс и все. Получался обмен данными. 2x2.требовалось лишь только иметь один общий настроечный файл, но ведь никто не мешает процессу потомку прочитать его снова. Насколько я знаю, в обычном fork общими остаются открытые дексрипторы файлов и потоки ввода/вывода/ошибок, а также все присоединенные общие сегменты памяти (shmop).

>>Интересно, конечно было бы ваше мнение все таки по статьям.
> Честно говоря, мне хотелось бы понять первичную цель. Механического порта кода

Да, я все таил надежду, что можно извратиться как нить и опля, все хорошо.

Насколько я понял это невозможно из-за архитектурных особенностей?

>с fork-ом не получиться, это очевидно. Под OpenVMS 7.0 и выше
>можно пользовать для простоты PIPE(s) - это метод грубый и обычно
>не пользуется VMS-никами, однако для униходиов може быть единственно понятным. Это
>порождение подпроцесса с DCL и выдача команд в поток, и получения
>в зад потока вывода.
>
> Что вам-то требуется?

А какой способ обычно используется инженерами VMS, если к примеру мне надо иметь общие данные между двумя процессами, запущенными одновременно, например структуру и достаточно интенсивное межпроцессное взаимодействие. Я в том смысле, что есть два потока-процесса, водном из которых слушается инет, а во втором запихиваются данные в инет должны реализовать некий протокол обена данными, т.е. пересылка данных в одном потоке-процессе, зависят от принятия некоторого сигнального пакета в другом процесс-потоке.

Все не расжевывайте, доки в инет полно, просто основной концепции достаточно, с указанием названий функций.

С уважением Александр.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "Запуск приложения из C"
Сообщение от SysMan emailИскать по авторуВ закладки on 06-Май-03, 18:52  (MSK)
>Спасибо, что просветили по поводу потоков. Я не мог понять для OpenVMS
>они  или для DEC-овского UNIX-a. Кстати, потоки поддерживаются в OpenVMS?
>хотя бы в 7.3?
Потоки в смысле thread-ы? Да, естественно. Начиная с 6.1.

Если речь идет о буквальном "пинге" то имеет смысл использовать AST-процедуру для приема и обработки принятых пакетов, в основном же цикеле посылать оные пакеты.

>>>Интересно, конечно было бы ваше мнение все таки по статьям.
>> Честно говоря, мне хотелось бы понять первичную цель. Механического порта кода
>
>Да, я все таил надежду, что можно извратиться как нить и опля,
>все хорошо.
Нет, и слава богу.

>Насколько я понял это невозможно из-за архитектурных особенностей?
Да, отчасти, но скорее от из-за различия в "дисциплинах и культурах программирования".


>А какой способ обычно используется инженерами VMS, если к примеру мне надо
>иметь общие данные между двумя процессами, запущенными одновременно, например структуру и
>достаточно интенсивное межпроцессное взаимодействие. Я в том смысле, что есть два
>потока-процесса, водном из которых слушается инет, а во втором запихиваются данные
>в инет должны реализовать некий протокол обена данными, т.е. пересылка данных
>в одном потоке-процессе, зависят от принятия некоторого сигнального пакета в другом
>процесс-потоке.

Если речь идет о буквальном "пинге" то имеет смысл использовать AST-процедуру для приема и обработки принятых пакетов, в основном же цикеле посылать оные пакеты. Это соотвественно $QIO[W] - системный сервис

Если смотреть чуть шире:
1) обмен между потоками через очереди (см. lib$insque/lob$remque) или через массивчик с арбитражем доступа посредством mutex-ов или семафоров (поддерживаемых аппаратно архитектурой Alpha+BIOS)

2) между процессами:глобальные секции (кусок памяти отображаемый в пространство процессов - требует доп. привилегий), или mailbox-ы - это почти как pipe, почти.

>Все не расжевывайте, доки в инет полно, просто основной концепции достаточно, с
>указанием названий функций.
Не буду.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "Запуск приложения из C"
Сообщение от alexhack emailИскать по авторуВ закладки on 07-Май-03, 12:58  (MSK)
Спасибо
  Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "Запуск приложения из C"
Сообщение от SysMan emailИскать по авторуВ закладки on 07-Май-03, 13:12  (MSK)
>Спасибо
Не за что. Все это подробно разжёвано в "OpenVMS Programming Concepts":

http://starlet.deltatel.ru/disk$axpdocsep001/opsys/vmsos721/5841/5841pro_contents.html

На более предметные вопросы готов ответить, но лучше мылом.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру