2012-01-12 40 views
18

Làm cách nào để thực thi dòng lệnh "asterisk -rx" tải lại "" trong C++? Hãy giúp tôi. Tôi cần một ví dụ. Tôi đang làm việc trên máy chủ ubuntu và tôi muốn thực hiện dòng lệnh này từ một người dùng (bên trong một webservice).Làm cách nào để thực hiện lệnh dòng lệnh từ chương trình C++

Cần giúp đỡ Coi trọng

+1

Bạn có thực sự có nghĩa là C++/CLI, bạn đã hiểu sai thẻ [C++ - cli] có nghĩa là "giao diện dòng lệnh C++" không? Có thực sự một C + +/CLI thực hiện cho Linux? – celtschk

Trả lời

21

Âm thanh như một use-case tầm thường cho system() chức năng:

system("asterisk -rx reload"); 

Nếu bạn cần kiểm soát rất hạt mịn trong quá trình đứa trẻ có những cách tốt hơn, nhưng điều này rất đơn giản để bắt đầu.

Cuộc gọi này bắt đầu một trình bao (chẳng hạn như bash) để chạy lệnh, đó là lý do tôi xóa các dấu ngoặc kép quanh reload; chúng là vô nghĩa đối với một từ duy nhất và sẽ bị loại bỏ bởi vỏ và không bao giờ được thấy bởi chương trình bắt đầu.

+0

Điều này là tốt, một phương pháp thay thế có thể là ngã ba/exec để (đòi hỏi nhiều nỗ lực hơn nhưng mạnh mẽ hơn tổng thể) – dreamlax

+0

tôi đã thử nghiệm nó byt không phải là wkiring –

+0

tôi có một dịch vụ web trên một máy chủ và tôi đang cố gắng gọi phương pháp này từ người dùng nhưng dấu hoa thị không tải lại. tại sao? cần trợ giúp plz –

4

system("asterisk -rx \"reload\"") có thể hoạt động, nếu bạn không cần đầu ra tiêu chuẩn hoặc lỗi từ quy trình.

Nếu bạn cần kết quả từ quá trình, here là ví dụ về cách sử dụng C popen() hoặc bạn có thể xem Boost.Process để biết cách tiếp cận C++.

+0

Anh ấy, đánh bại tôi khoảng 7 giây :) – LiMuBei

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