我正在运行以下bat文件并收到错误
assertion "root_idx != -1" failed:
file "/ext/build/netrel/src/cygwin-1.7.1-1/winsup/cygwin/mount.cc",
line 363, function: void mount_info::init()
Stack trace: Some random stack trace
ENd of stack Trace
批次代码
@echo off
:top
set /a run=1
echo "Beginning of Loop"
echo %run%
wmic process where "name like '%%java%%' and CommandLine like '%%abc%%'" get caption, CommandLine | findstr "abc" 1>nul || set /a run=0
if %run%==0 (
echo "Process Not Running"
start cmd /c 'path to file')
echo "Taking a Pause"
sleep 10
goto :top
为什么首先调用cygwin? 为什么我得到错误并且无限循环停止(循环检查程序是否存在并且如果以某种方式被杀死则启动它
答案 0 :(得分:0)
不知道如何避免Cygwin错误,但是如果你不想调用它,请检查你的PATH变量,以便Cygwin路径不在其中,或者至少它在路径的末尾列表。
答案 1 :(得分:0)
就我而言,它在某些构建过程(以及与之关联的Cygwin控制台)进入Suspended状态后开始再现。我使用Process Explorer工具(来自https://live.sysinternals.com/的工具)看到了它。
我不知道他们被暂停的原因。父进程在等待某些内容时就被杀死了。这真的不要紧。但是重要的是,在我打开每个新的Cygwin控制台之后,它都挂了。对我来说,解决方法是找到旧的暂停的Cygwin进程并杀死它们。
为什么首先要调用cygwin?
当您在cmd.exe中运行某些程序时,但您的PATH配置为使用Cygwin时,它将尝试首先在Cygwin中运行命令(取决于PATH的顺序)。
为什么我会收到错误消息并停止无限循环
我想你有和我一样的问题。那就是每个新的Cygwin控制台都将挂起,直到您杀死第一个有问题的控制台为止。