cygwin: a saída congela até o término do programa

1

Eu uso o cygwin no Windows XP.

Existe um problema com o Mercurial, por exemplo.

Digamos que eu precise empurrar meu repositório com vários subrepos para o servidor remoto. Esta operação leva cerca de 20 segundos.

Quando eu chamo hg de cmd.exe , vejo todas as ações em tempo real:

pushing subrepo ..... to .....
searching for changes

Está tudo bem.

Mas, quando eu chamo do terminal cygwin, eu digito hg push , pressiono Enter, e não há nada ecoado no console por cerca de 20 segundos, e então todos os logs aparecem imediatamente.

Por que isso e como posso evitar isso?

    
por Dmitry Frank 04.08.2013 / 17:46

3 respostas

1

Eu uso o mercurial sob o cygwin e não tenho o problema descrito. Esta é uma versão "nativa" para o Windows do mercurial, ou a versão do cygwin? Se o primeiro, tente o último.

    
por 06.08.2013 / 00:11
1

Eu sei que este é um tópico antigo, mas experimentei esse problema nos últimos três anos. E depois de cerca de um mês, eu estava desmoronando e não aguentava mais. Pode ser um pouco brusco, ou pesado, mas funciona ... e tem trabalhado por 2,75 anos sem problema.

Veja o que impediu que meu laptop acabasse na rua

$ ln -s 'where ping.exe | grep -v rh' /usr/bin/ping.exe

Veja como eu cheguei lá ...

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 ~
$

Espero que isso ajude alguém, alguém como ele me ajudou.

    
por 05.02.2015 / 11:08
0

Eu sei que ao implementar código de linha de comando em C / C ++ esse comportamento pode ser controlado pelo comando fflush () para liberar um buffer de saída, fclose () faria a mesma coisa.

Portanto, depende do programa que você está executando e da frequência com que eles são liberados ().

    
por 05.08.2013 / 17:11