Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: SynWrite (Syn2) 
Author Message
480499497



PostPosted: Sun Aug 05, 2012 20:23    Post subject: Reply with quote

понял как производиться вывод в консоль ошибок в Син. Вставляем файл SynWr$$.txt из TEMP в таком случае, Син способен перехватывать консольные ответы со всего что угодно и с командной строки тоже. Но это никак не влияет на проблему. Батник не помог. Независимо от того запускаю я через:

батник с вызовом нового процесса cmd /c и вызовом скрипта
батник с прямым вызовом скрипта
cmd и передачу параметра /c"node.exe" {FileName}
сразу через node.exe и параметр {FileName}

все 4 варианта вешают Син. Почему это происходит не имею ни малейшего представления. Могу только предположить что как раз из-за перехвата консоли. Син пытается заполнить SynWr$$.txt и будет пытаться это делать до тех пор пока скрипт сервера запущен, а сам файл закрыт для обращения, так как в него Син пытается внести изменения. Тоесть нужно выносить функцию формирования этого файла и вызов внешнего обработчика отдельным процесом а не обрабатывать в Syn.exe (либо реализовывать механизм вызова внешнего приложения так что бы син не вешался, и чтение файла консоли переделывать так что бы или вообще файл не применять а работаь с масивами, к ним доступ не блокируется виндой как к файлу).

В первом варианте описаного мною запуска через батник с вызовом командной строки у нас получается такое дерево процессов:

Syn.exe
run.bat
(либо cmd.exe зависимо от настроек винды)
cmd.exe
node.exe

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

Собственно в этом и загвоздка, вызывать node.exe независимо от Син.

Примеры скрипктов (нужно иметь установленый Node.js)

server.js
Code:
var http = require("http");

http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();

}).listen(8888);

Что бы вызвать ответ об ошибке, перед строкой }).listen(8888); добавить строку ();
убедиться что скрипт работает http://localhost:8888

run.bat
Code:

cmd /c"c:\Progra~1\nodejs\node.exe" server.js


либо если ассоциировать нод и файлы то
Code:

server.js


Posted after 16 minutes:

п.с. Разумеется если использоваться команду start в батнике вместо обращения к цмд, то будет вызван новый независимый процесс, но в нем нет возможности обмена консолью с родительским процессом, поэтому скрипт будет работать но без перехвата.

Code:
start "c:\Program Files\nodejs\Node.exe"  server.js
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group