为什么启动Curl会有很长的6秒延迟


9

我在Windows 7 x64计算机上完整安装了Cygwin。重新启动每台计算机后,Curl可能需要大约6秒钟才能启动(即使未指定任何命令行选项)。在以后使用Curl时,没有延迟。似乎DLL正在初始化或?有没有其他人看到过,这正常吗?


1
如果先前未启动任何Cygwin进程,则可能是Cygwin DLL自身进行了初始化。您如何从Windows Shell或Cygwin bash调用curl?您是否启用了任何Cygwin服务,或者在启动或登录时运行的任何Cygwin命令?
亚伦·米勒

我从Windows cmd提示符(而不是bash)调用它。我尚未配置任何其他服务来启动。我已经在其他机器(包括32位Windows XP)上重现了该问题,因此我认为这可能是正常的启动时间,但我想确认一下。
user265445

Answers:


7

这个是正常的; Cygwin DLL第一次运行时,它将执行几个初始化步骤,以建立Cygwin环境,这可能很耗时。这种初始化是在系统启动后第一次创建Cygwin进程时发生的,不幸的是,它没有真正的解决方法。

我可以提供的最佳建议是修改系统启动方案或登录脚本,以创建Cygwin进程,以使初始化时间在预期已在系统上等待的时间“进入” ,而不是稍后期望快速响应时发生。例如,您可以将以下内容作为批处理文件添加到C:\Users\<your username>\AppData\Local\Microsoft\Windows\Start Menu\Programs\Startup

c:\cygwin\bin\run.exe '/bin/bash -c "ls > /dev/null"'

这将启动Cygwin bash进程,该进程很快不执行任何操作,然后退出,而不会在控制台上显示窗口-从而迫使Cygwin DLL加载并初始化自身,而不会产生任何副作用,因此当您最终打开一个命令提示符并运行curl,初始化时间已经发生,并且在运行交互式命令时不会为您烦恼。


感谢您的链接,这解释了我所看到的延迟。
user265445 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.