в Cygwin: выход зависает, пока программа не будет завершена

Я использую cygwin в Windows XP.

есть проблема с Mercurial, например.

скажем, мне нужно отправить репозиторий с несколькими вложенными репозиториями на удаленный сервер. Эта операция занимает около 20 секунд.

когда я называю hg С cmd.exe, Я вижу все действия в реальном времени:

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

etc. все отлично.

но, когда я вызываю его из терминала cygwin, я печатаю hg push, нажмите Enter, и на консоли ничего не отразится около 20 секунд, а затем все журналы появляются сразу.

Почему, и как я могу этого избежать?

9
задан Dmitry Frank
24.01.2023 8:22 Количество просмотров материала 3461
Распечатать страницу

3 ответа

Я использую mercurial под cygwin, и у меня нет описанной проблемы. Является ли это" родной " версией Windows mercurial или версией cygwin? Если первое, попробуйте второе.

1
отвечен Heptite 2023-01-25 16:10

Я знаю, что это старая тема, но я испытал эту проблему в течение последних 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 ~
$

Я надеюсь, что это поможет кому-то, кому нравится помочь мне.

1
отвечен David Dionne 2023-01-25 18:27

Я знаю, что при реализации кода командной строки в C / C++ это поведение можно контролировать с помощью команды fflush (), чтобы очистить выходной буфер, fclose () сделает то же самое.

Итак, это зависит от программы, которую вы запускаете, и как часто они сбрасывают().

0
отвечен The Dave 2023-01-25 20:44

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх