2010-12-26 19 views
32

Próbuję uruchomić terminal cmd w Emacs 23.2 (najnowsza wersja) w systemie Windows.Terminal w systemie Emacs w systemie Windows - Komunikat o błędzie: "Rozrastanie procesu podrzędnego, niepoprawny argument"

Zgodnie z Manual, mogę wejść w tryb terminalowy (uruchomienie nowego bufora terminala) w Emacs, wpisując M-x term.

Kiedy to zrobić, otrzymuję monit o:

Run program: path_to-emacs/bin/cmdproxy.exe 

Po wpisaniu RET, pojawia się następujący komunikat o błędzie w minibufora:

Spaning child process: invalid argument 

Wszelkie pomysły jak uczynić go pracować ?

Dzięki,

+4

Mając ten sam problem tutaj :( – dolzenko

+2

Mam ten sam problem tutaj, ale z "C:/Program Files (x86) /Git/bin/bash.exe" (co oznacza, że ​​"użyj rzeczywistej powłoki "jest mało prawdopodobne, aby to było problemem) – Arafangion

+0

Zobacz także http://stackoverflow.com/questions/20263012 –

Odpowiedz

9

następuje należy zrobić:

  • M:(make-comint-in-buffer "cmd" nil "cmd" nil)

  • M x eshell

  • M x powłoki

Wszystkie mają swoje wady i zalety. Wybierz więc, co Ci najbardziej odpowiada.

+1

Nie. Nie mam pojęcia dlaczego, ale z "powłoką" GDB MinGW ma dziwne niewłaściwe zachowanie. Na przykład. aplikacja działająca pod nim nie drukuje instrukcji print, skarżą się na nieprawidłowe argumenty, gdy coś wprowadzę. Gdb runnning w zwykłym terminalu nie ma żadnych problemów, więc jest to z pewnością problem Emacsa. To samo dotyczy obu trybów 'gdb' i' gud-gdb'. –

+0

Znalazłem, jaki miałem problem. Napisamy tutaj, w nadziei, że komuś to pomoże: terminal Windows® ma własne kodowanie (można go znaleźć za pomocą polecenia chcp, może być inne, zależnie od ustawień narodowych), a aby pracować z gdb trzeba ustawić kodowanie bufora przyznać systemowy –

1

Spróbuj M-x cmd-shell zamiast. Sugeruję użycie EmacsW32 dla najlepszych rezultatów.

+4

Dzięki İsmail, z pewnością mogę użyć powłoki Mx w Emacs i EmacsW32 oraz powłoki cmd Mx w EmacsW32, ale chciałbym aby emulować rzeczywisty terminal, aby niektóre interaktywne programy konsolowe działały poprawnie, innymi słowy, chciałbym, aby termin Mx działał, –

+1

Następnie potrzebujesz prawdziwej powłoki, takiej jak bash z cygwin lub msys.cmd.exe z Windows nie jest UNIXy – ismail

+4

Mam msys bash, ale (termin "bash") lub (termin "the-full-path-to-bash.exe") nadal skarżą się na nieważny argument ..? –

3

Miał ten sam problem.

Pobiegłem procmon i odkrył, że Emacs chce znaleźć c:\bin\sh w jakiejś formie (sh.exe, sh.bat, sh.cmd, etc).
Ponieważ zdarzyło mi się chce korzystać z trybu termin z android debugowania powłoki, stworzyłem c:\bin\sh.bat z treścią „adb shell”, i to działało w porządku, aczkolwiek z pewnym dziwnym wejściowego lag.

+0

I loo Ked w tym trybie bitowym i terminowym ma kilka zakodowanych ścieżek do plików wykonywalnych, tak więc w Windowsie wygląda to w niezręcznych miejscach. –

6

Wystąpił ten sam błąd podczas próby uruchomienia M-x compile. I dodaje następujące do mojego pliku .emacs i problem został rozwiązany:

;; Make sure that the bash executable can be found 
(setq explicit-shell-file-name "C:/cygwin/bin/bash.exe") 
(setq shell-file-name explicit-shell-file-name) 
(add-to-list 'exec-path "C:/cygwin/bin") 

Oczywiście rozwiązanie to będzie działać tylko wtedy, gdy masz zainstalowany Cygwin, ale jeśli używasz Emacsa w systemie Windows jest to zwykle warto przynajmniej minimalny zainstalować Cygwin, ponieważ wiele poleceń Emacsa może korzystać z narzędzi wiersza poleceń udostępnionych przez cygwin (M-x compile w moim przypadku).

3

Jeśli chcesz użyć term lub ansi-term z cmd.exe lub Cygwin bash na Windows z Win32 Emacs można, spojrzeć na ten projekt:

fakecygpty

Działa bardzo ładnie dla mnie na Win 10.