2013-08-04 44 views
16

Sử dụng python trong thiết bị đầu cuối trên một máy Mac, gõdừng python trong thiết bị đầu cuối trên mac

ctrl-z 

sẽ ngừng trăn, nhưng không thoát khỏi nó, cho đầu ra như thế này:

>>> 
[34]+ Stopped     python 

Như bạn có thể thấy, tôi đã ngừng 34 cuộc gọi python.

Mặc dù tôi có thể sử dụng

>>> exit() 

để thoát khỏi trăn, những câu hỏi là:

  1. Có ngắn chìa khóa để thực sự thoát (không chỉ dừng lại) python trong terminal? và tại sao

    ctrl-c

    KHÔNG hoạt động?

  2. Làm cách nào để xóa tất cả dấu vết đã ngừng hoạt động?

BTW, làm cách nào để nhập 'ctrl-c' và các phím nóng khác bằng giao diện bàn phím?

Cảm ơn!

+3

Để tiêu diệt tất cả các phiên bản python đang chạy khác, gõ lệnh sau vào terminal của bạn: killall -vs SIGKILL python – smac89

Trả lời

21

CTRL + d -> Xác định EOF (kết thúc tệp).

CTRL + c -> Sẽ chấm dứt hầu hết các công việc.

Nếu, tuy nhiên bạn đã viết chương trình trình bao python gọi các chương trình python khác lần lượt, Ctrl-c sẽ chỉ dừng công việc hiện đang chạy. Chương trình trình bao bọc sẽ tiếp tục chạy. Kịch bản trường hợp xấu nhất, bạn có thể thực hiện việc này:

Mở: Ứng dụng -> Tiện ích -> Màn hình hoạt động, Tìm quy trình được gắn nhãn là python, đánh dấu nó trong màn hình hoạt động rồi nhấp vào "Thoát quá trình".

Ba đề xuất này sẽ hoạt động đối với hầu hết các tình huống mà bạn muốn chương trình dừng lại.

+0

Trực tiếp hơn: có. Ctrl-d sẽ dừng thiết bị đầu cuối python. Ngoài ra nếu bạn có bất kỳ câu hỏi khác liên quan đến python và nó là thiết bị đầu cuối, gõ: "help()", trong terminal. Khám phá chương trình nhỏ này sẽ dạy cho bạn nhiều điều. :) – user2522001

1

Đây không phải là vấn đề về Python. Đây là một hành vi của trình bao Unix và là sự khác biệt giữa Windows và các hệ thống khác. Xem Wikipedia article on CTRL-Z cho một lời giải thích đầy đủ hơn:

Trên các hệ thống Unix-like, Control + Z là phổ biến nhất bàn phím mặc định bản đồ cho các dãy phím tạm ngừng một quá trình (SIGTSTP). Khi người dùng nhập vào thiết bị đầu cuối máy tính của họ, hiện tại quá trình chạy nền trước đang chạy được gửi tín hiệu SIGTSTP, thường là khiến quá trình tạm ngưng thực thi. Người dùng sau này có thể tiếp tục thực hiện quy trình bằng cách nhập lệnh 'fg' (viết tắt là tiền cảnh) hoặc bằng cách nhập 'bg' (viết tắt là nền) và thêm nhập lệnh 'disown' để tách quy trình nền từ thiết bị đầu cuối.

Trên OS X như trên các hệ thống khác nhau dựa trên Unix, bạn có thể sử dụng lệnh stty thay đổi mà quan trọng, nếu có, tạo ra một SIGTSTP (hoặc một eof, cho rằng vấn đề):

$ stty -a 
speed 38400 baud; 30 rows; 90 columns; 
lflags: icanon isig iexten echo echoe echok echoke -echonl echoctl 
    -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo 
    -extproc 
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8 
    -ignbrk brkint -inpck -ignpar -parmrk 
oflags: opost onlcr -oxtabs -onocr -onlret 
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow 
    -dtrflow -mdmbuf 
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>; 
    eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V; 
    min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T; 
    stop = ^S; susp = ^Z; time = 0; werase = ^W; 
$ stty susp ^Y 
$ cat 
^Y 
[1]+ Stopped     cat 
Các vấn đề liên quan