2011-08-31 28 views
6

Tôi đang sử dụng Python 2.6 trên Windows 7. Tôi có tệp .cmd Windows gọi Python chạy máy chủ Web CherryPy (phiên bản 3.1.2). Tôi bắt đầu tập tin .cmd này bằng cách thực hiện nó tại dấu nhắc trong một Windows CMD shell. Khi CherryPy nhận thấy rằng một trong các tệp phụ thuộc của nó đã thay đổi, nó khởi động lại. Có một vài vấn đề phát sinh trong cấu hình này trên Windows, vì gọi đó CherryPy sử dụng để khởi động lại chính nó làLàm thế nào để làm os.execv() trong Python trong Windows mà không cần tách khỏi bàn điều khiển?

os.execv(sys.executable, args) 

nhưng bạn không thể gọi Python thực thi trên file .cmd. Tôi đã quản lý để vượt qua mà vấn đề thông qua thể dục dụng cụ Python khác nhau, và bây giờ tôi đã bị nó khởi động lại bằng cách gọi (về cơ bản)

os.execv(sys.argv[0], args) 

Nhưng quá trình: Khởi động lại được tách ra từ bàn phím; nó sẽ bắt Ctrl-C, và sau đó tôi hỏi

Terminate batch job (Y/N)? 

nhưng Y hoặc NI loại được bắt không phải do file cmd chấm dứt, nhưng do cấu trúc hệ thống CMD, và nó đáp ứng

'Y' is not recognized as an internal or external command, operable program or batch file. 

Vì vậy, làm thế nào để tôi thiết lập mọi thứ trong Windows để giữ cho quá trình khởi động lại trong những gì tôi gọi là "tiền cảnh" trong Unix?

+0

Câu hỏi này [link] (http: // stackoverflow .com/questions/7004687/os-exec-on-windows) là phiên bản đơn giản hơn của câu hỏi này. Câu trả lời cho câu hỏi đó sẽ được tính là câu trả lời cho câu hỏi này, nhưng nó chưa được trả lời thỏa đáng. –

+0

Hãy xem nhận xét mới của tôi cho câu hỏi đó. –

Trả lời

-3

bạn có thể sử dụng phương pháp subprocess.call như ví dụ này

import subprocess 

retcode = subprocess.call(["ls", "-l"]) 

xem liên kết này để biết thêm thông tin về lớp subprocess:

subprocess — Subprocess management

+1

Không, có lỗi giống như phương pháp gốc. –

Các vấn đề liên quan