Re: Re: CGP for OS/2

От: Alexander Lapshin <CGatePro_at_mx_ru>
Дата: Fri 07 Nov 2003 - 13:35:59 MSK

On 06.11.03 22:29, (Vladimir A. Butenko) wrote:

> Естественно. Программой в ОС называется то, что ядро ОС может запустить.
> Если ядро может запускать только бинарники (как в современных Виндоузах,
> так и в Windows NT 2.0 aka OS/2), то они и есть программы. В Унихах
> exec() пожет понять, что надо запустить интерпретатор - поэтому там и
> .pl - программа.
>
> Но - не всё так плохо. Во-первых, никто не мешает Вам запустить все явно,
> "[FILE] CMD C:\APP\....." (то есть с явным указанием интерпретатора).
> Во-вторых, посмотрите на страничку Settings->WebUser. Она там с такими
> системами борется явным указанием интерпретаторов - для CGI, но,
> кажется, это работает и для Rules Exec.

        А может быть, не мудрствуя лукаво, для WIN и OS/2 вместо exec() использовать system()? И проблема сразу отпадает.

> Хм. Там нету никаких flush(), потому что в CGatePro нет никаких С-шных
> библиотек. Оно пишет прямо операциями write(), и потом - close(). А вот
> чего оно не делает, так это не читает strderr и stdout - пока все в
> stdin() не запихнет. И если Ваша программа что-то в них пишет, то она
> зависнет, причем сильно раньше, чем в Unix. Проверьте, пожалуйста,
> может, в этом все дело.

	В STDOUT ничего не пишется. Тут что-то другое.
	Я, для тестирования, завёл юзера TEST и форвард мыла на
"CMD.EXE /c C:\\ПолныйПуть\\Test.CMD"@pipe
	Скрипт всё, что принял из STDIN'а пшет в файл и ничего не пишет в 
STDOUT. Вот сам скрипт:
--- Test.Cmd --
/***/

InFile = "STDIN:"
OutFile = "C:\TMP\123.Log"

Call LineOut OutFile, "---START---"
DO While Lines(InFile)

        Call LineOut OutFile, LineIn(InFile)
End /* Do */
Call LineOut OutFile, "---FINISH---"
Call LineOut OutFile

Exit
--- Test.Cmd --

	В результате отсылки мыла для юзера TEST:
	1) запускается скрипт
	2) Пишет в 123.Log строку "---START---"
	3) Пишет всё письмо
	4) После этого как-бы "зависает" пока по таймауту CGP его не прибьёт, 
т.е. строку "---FINISH---" мы 123.log никогда не увидим.
	Отсюда можно сделать вывод, что, после посылки письма в вызываемый 
скрипт, клиентский STDIN не закрывается.
	Или у Вас есть другие объяснения?

-- 
(c)ALex
Получено Fri Nov 07 10:36:06 2003

Этот архив был сгенерирован hypermail 2.1.8 : Fri 24 Apr 2015 - 16:12:51 MSK