LINUX.ORG.RU

История изменений

Исправление Zubok, (текущая версия) :

Почему этот select работает нормально в Debian, но зависает и отваливается по таймауту в остальных при subshell=DASH - никаких мыслей нет.

Откуда ошибка идет там более-менее понятно. В исходном коде mc какая-то фигня (/src/subshell/common.c). Там в subshell, если он является dash, передается pwd>&%d, чтобы prompt сформировать. Вместо %d подставляется subshell_pipe[WRITE]. dash на этот subshell_pipe[WRITE] выдает ошибку типа:

$ dash -c 'pwd>&10'
dash: 1: Syntax error: Bad fd number

Скорее всего, файловый дескриптор, который передается в скрипт, состоит из двух цифр, а dash их не понимает. Похоже, он только от 0 до 9 принимает.

$ dash -c 'pwd>&9'
dash: 1: 9: Bad file descriptor

В общем, subshell умирает раньше времени из-за ошибки, не дойдя до конца. А mc сидит в select с тамаутом 10 секунд.

Исправление Zubok, :

Почему этот select работает нормально в Debian, но зависает и отваливается по таймауту в остальных при subshell=DASH - никаких мыслей нет.

Откуда ошибка идет там более-менее понятно. В исходном коде mc какая-то фигня (/src/subshell/common.c). Там в subshell, если он является dash, передается pwd>&%d, чтобы prompt сформировать. Вместо %d подставляется subshell_pipe[WRITE]. dash на этот subshell_pipe[WRITE] выдает ошибку типа:

$ dash -c 'pwd>&9'
dash: 1: 9: Bad file descriptor

$ dash -c 'pwd>&10'
dash: 1: Syntax error: Bad fd number

Скорее всего, файловый дескриптор, который передается в скрипт, состоит из двух цифр, а dash их не понимает. Похоже, он только от 0 до 9 принимает.

В общем, subshell умирает раньше времени из-за ошибки, не дойдя до конца. А mc сидит в select с тамаутом 10 секунд.

Исходная версия Zubok, :

Почему этот select работает нормально в Debian, но зависает и отваливается по таймауту в остальных при subshell=DASH - никаких мыслей нет.

Откуда ошибка идет там более-менее понятно. В исходном коде mc какая-то фигня. Там в subshell, если он является dash, передается pwd>&%d, чтобы prompt сформировать. Вместо %d подставляется subshell_pipe[WRITE]. dash на этот subshell_pipe[WRITE] выдает ошибку типа:

$ dash -c 'pwd>&9'
dash: 1: 9: Bad file descriptor

$ dash -c 'pwd>&10'
dash: 1: Syntax error: Bad fd number

Скорее всего, файловый дескриптор, который передается в скрипт, состоит из двух цифр, а dash их не понимает. Похоже, он только от 0 до 9 принимает.

В общем, subshell умирает раньше времени из-за ошибки, не дойдя до конца. А mc сидит в select с тамаутом 10 секунд.