Các tập lệnh Bash rất hữu ích và có thể tiết kiệm rất nhiều thời gian lập trình. Vậy làm thế nào để bạn bắt đầu một kịch bản bash trong một chương trình C++? Ngoài ra, nếu bạn biết cách làm cho người dùng trở thành siêu người dùng cũng sẽ rất tuyệt. Cảm ơn!Cách chạy tập lệnh bash từ chương trình C++
Trả lời
Sử dụng chức năng system
.
system("myfile.sh"); // myfile.sh should be chmod +x
#include <stdio.h>
#include <stdlib.h>
// ....
system("my_bash_script.sh");
Điều gì sẽ xảy ra nếu tập lệnh bash là để lặp lại một số văn bản thành tty? Ví dụ. nếu đó là "con mèo" thì sao? Chương trình c có đầu ra đó không? –
Các tiêu chuẩn duy nhất thực hiện bắt buộc cách phụ thuộc là sử dụng system()
chức năng từ stdlib.h
.
Ngoài ra, nếu bạn biết cách làm cho người dùng trở thành siêu người dùng cũng sẽ tốt.
Bạn có muốn tập lệnh chạy dưới dạng siêu người dùng hay bạn muốn nâng cao đặc quyền của tệp thi hành C? Trước đây có thể được thực hiện với sudo
nhưng có một số điều bạn cần biết trước khi bạn có thể sử dụng sudo
.
StackOverflow: How to execute a command and get output of command within C++?
StackOverflow: (Using fork,pipe,select): ...nobody does things the hard way any more...
Ngoài ra nếu bạn biết làm thế nào để làm cho người sử dụng trở thành siêu người dùng sẽ được tốt đẹp cũng có. Cảm ơn!
sudo. su. chmod 04500. (setuid() & seteuid(), nhưng chúng yêu cầu bạn phải là root. E..g. chmod'ed 04 ***.)
Cẩn thận. Chúng có thể mở các lỗ an ninh "thú vị" ...
Tùy thuộc vào những gì bạn đang làm, bạn có thể không cần root. (Ví dụ: tôi sẽ thường là chmod/chown/dev thiết bị (cổng nối tiếp, v.v.) (dưới sudo root) để tôi có thể sử dụng chúng từ phần mềm của mình mà không bị root. Mặt khác, điều đó không hoạt động rất tốt khi tải/dỡ các mô-đun hạt nhân ...)
Vì đây là câu hỏi khá cũ và phương pháp này chưa được thêm (ngoài chức năng gọi system()
), tôi đoán sẽ hữu ích khi tạo kịch bản lệnh shell với chính bản thân nhị phân C. Mã trình bao sẽ được đặt bên trong tệp nguồn file.c
. Dưới đây là một ví dụ về mã:
#include <stdio.h>
#include <stdlib.h>
#define SHELLSCRIPT "\
#/bin/bash \n\
echo -e \"\" \n\
echo -e \"This is a test shell script inside C code!!\" \n\
read -p \"press <enter> to continue\" \n\
clear\
"
int main() {
system(SHELLSCRIPT);
return 0;
}
Về cơ bản, trong một nutshell (ý định chơi chữ), chúng ta định nghĩa tên kịch bản, cho thịt ra khỏi kịch bản, kèm theo chúng trong dấu ngoặc kép (trong khi chèn thoát thích hợp để bỏ qua dấu ngoặc kép trong mã shell), và sau đó gọi tên của tập lệnh đó, trong ví dụ này là SHELLSCRIPT
sử dụng hàm system()
trong main()
.
- 1. Chạy tập lệnh bash từ tập lệnh R
- 2. Gọi một tập lệnh từ chương trình C gốc setuid - tập lệnh không chạy dưới dạng root
- 3. Chạy tập lệnh bash từ Windows PowerShell
- 4. Chạy chương trình IDL từ bash với các biến
- 5. Chạy tập lệnh bash shell trong java
- 6. Kiểm tra giá trị trả về của chương trình C trong tập lệnh bash?
- 7. Chạy tập lệnh bash từ tập lệnh khác mà không phải đợi tập lệnh hoàn tất quá trình thực thi?
- 8. Có thể gọi các tập lệnh bash hoặc shell từ một chương trình haskell không?
- 9. Chạy tập lệnh bash nhiều chuỗi từ Emacs
- 10. grep mất màu khi chạy từ tập lệnh bash
- 11. Tạo tập lệnh shell để chạy chương trình Java
- 12. Chạy lệnh khi tập lệnh bash bị dừng
- 13. Bash: Chạy cùng một chương trình trên nhiều lõi
- 14. Fool python's os.isatty từ tập lệnh bash
- 15. Chạy tập lệnh Bash trên dòng lệnh Windows XP
- 16. Màn hình GNU chạy tập lệnh bash init
- 17. Xuất JSON từ tập lệnh Bash
- 18. Sử dụng "kiểm tra" để khởi chạy tập lệnh bash cho các thử nghiệm sử dụng chương trình nhị phân
- 19. Bash - Thoát tập lệnh mẹ từ tập lệnh con
- 20. Cách khởi chạy chương trình từ perl?
- 21. Cách thực thi tập lệnh .sql từ bash
- 22. Sử dụng bash (cygwin) bên trong chương trình C#
- 23. Chạy lệnh bash từ tệp txt
- 24. Chạy lệnh Drush từ tập lệnh PHP
- 25. Chạy chương trình C# .NET từ mạng chia sẻ
- 26. Làm cách nào để gửi tín hiệu SIGINT từ tập lệnh đến tập lệnh? BASH
- 27. cách thực hiện chương trình .exe bằng tập lệnh php
- 28. Cách khởi chạy tập lệnh PowerShell từ dòng lệnh OS?
- 29. Song song các quy trình PHP bằng Tập lệnh Bash?
- 30. Sản lượng màu của chương trình chạy dưới BASH
Cảm ơn nhưng bạn quên bao gồm: hệ thống ("./ myfile.sh"); – Kredns
Nó sẽ hoạt động mà không cần. nếu thư mục nằm trong đường dẫn của bạn :) –
Thư mục hiện tại '.' * không nên * nằm trong' $ PATH' của bạn. –