Семантика перенаправления пакетного программирования Windows - PullRequest
0 голосов
/ 17 сентября 2010

У меня есть пакетный скрипт Windows (my.bat), который имеет следующую строку:

DTBookMonitor.exe 2>&1 > log\cmdProcessLog.txt

Итак, насколько я понимаю, это запускает DTBookMonitor, перенаправляет STDERR в STDOUT, а затем перенаправляет STDOUT в файл журнала \ cmdProcessLog.txt.

Затем я запускаю my.bat. DTBookMonitor работает в течение значительного периода времени, и когда я запускаю my.bat второй раз (пока он уже запущен), он сразу же выходит из второго экземпляра my.bat.

Это только из-за перенаправления на cmdProcessLog?

Ответы [ 2 ]

2 голосов
/ 25 мая 2012

Лучше поздно, чем никогда:)

Перенаправление Windows блокирует выходной файл, так что никакой другой процесс не может открыть файл для записи одновременно.Вот почему происходит сбой второго экземпляра, когда он пытается перенаправить вывод в тот же файл.

1 голос
/ 17 сентября 2010

Полагаю, это либо из-за этого, либо из-за того, что DTBookMonitor позволяет одновременно запускать только один его экземпляр. Следующий тест должен пролить свет на ситуацию:

  • Запустить первый (длинный) экземпляр DTBookMonitor
  • Запуск второго экземпляра без перенаправления его вывода
  • Либо запустить второй экземпляр, но перенаправить вывод в файл, отличный от log\cmdProcessLog.txt

Получаете ли вы похожие результаты? Разные результаты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...