我在 Windows XP 上使用 cygwin。
例如,Mercurial 存在问题。
假设我需要将我的 repo 和几个子 repo 推送到远程服务器。此操作大约需要 20 秒。
当我hg
从拨打电话时cmd.exe
,我可以看到实时的所有操作:
pushing subrepo ..... to .....
searching for changes
等等。一切都很好。
但是,当我从 cygwin 终端调用它时,我输入hg push
,按 Enter,大约 20 秒内没有任何内容回显到控制台,然后所有日志立即出现。
为什么会这样?我该如何避免?
答案1
我在 cygwin 下使用 mercurial,没有遇到上述问题。这是 mercurial 的“原生”Windows 版本,还是 cygwin 版本?如果是前者,请尝试后者。
答案2
我知道这是一个老话题,但我在过去 3 年里一直遇到这个问题。大约一个月后,我就开始崩溃,再也忍受不了了。它可能有点钝,或者有点笨拙,但它确实有效……并且已经工作了 2.75 年,没有出现问题。
这就是为什么我的笔记本电脑不会掉到街上
$ ln -s `where ping.exe | grep -v rh` /usr/bin/ping.exe
以下是我到达那里的方式...
david@Covet ~
$ which ping.exe
/usr/bin/ping.exe
david@Covet ~
$ /usr/bin/ping.exe
Usage: ping [-dfqrv] host [packetsize [count [preload]]]
david@Covet ~
$ where ping.exe
C:\rhcygwin64\bin\ping.exe
C:\Windows\System32\PING.EXE
david@Covet ~
$ mv /usr/bin/ping.exe /usr/bin/cyping.exe
david@Covet ~
$ ln -s `where ping.exe | grep -v rh` /usr/bin/ping.exe
david@Covet ~
$ which ping
/usr/bin/ping
david@Covet ~
$ ping
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
[-r count] [-s count] [[-j host-list] | [-k host-list]]
[-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
Options:
-t Ping the specified host until stopped.
To see statistics and continue - type Control-Break;
To stop - type Control-C.
-a Resolve addresses to hostnames.
-n count Number of echo requests to send.
-l size Send buffer size.
-f Set Don't Fragment flag in packet (IPv4-only).
-i TTL Time To Live.
-v TOS Type Of Service (IPv4-only. This setting has been deprecated
and has no effect on the type of service field in the IP Header).
-r count Record route for count hops (IPv4-only).
-s count Timestamp for count hops (IPv4-only).
-j host-list Loose source route along host-list (IPv4-only).
-k host-list Strict source route along host-list (IPv4-only).
-w timeout Timeout in milliseconds to wait for each reply.
-R Use routing header to test reverse route also (IPv6-only).
-S srcaddr Source address to use.
-4 Force using IPv4.
-6 Force using IPv6.
david@Covet ~
$ ping -t 8.8.8.8
Pinging 8.8.8.8 with 32 bytes of data:
Reply from 8.8.8.8: bytes=32 time=13ms TTL=54
Reply from 8.8.8.8: bytes=32 time=13ms TTL=54
Reply from 8.8.8.8: bytes=32 time=13ms TTL=54
Reply from 8.8.8.8: bytes=32 time=13ms TTL=54
Reply from 8.8.8.8: bytes=32 time=13ms TTL=54
Reply from 8.8.8.8: bytes=32 time=14ms TTL=54
Reply from 8.8.8.8: bytes=32 time=14ms TTL=54
david@Covet ~
$
我希望这对某些人有帮助,任何人都可以像我一样帮助过他们。
答案3
我知道在 C/C++ 中实现命令行代码时,可以通过 fflush() 命令控制此行为来刷新输出缓冲区,fclose() 也会执行相同的操作。
所以,这取决于您正在运行的程序以及它们的 flush() 频率。