Có cách nào để chuyển hướng dữ liệu được in bởi io:format()
từ vỏ erlang vào một tệp không? Tôi biết rằng tôi có thể mở một tập tin (IoDevice) và ghi dữ liệu trực tiếp vào nó, nhưng nó đòi hỏi phải thay đổi mã và tôi không muốn làm bây giờ.Chuyển hướng đầu ra từ vỏ erlang vào một tệp
Trả lời
Chỉ cần chạy với erl -noinput -s module function -s init stop > file
.
Đây là một ví dụ. đang
Erlang:
-module(test).
-compile(export_all).
function() ->
io:fwrite("Hello world!~n").
Trong vỏ:
$ erlc test.erl
$ erl -noinput -s test function -s init stop > test.txt
$ cat test.txt
Hello world!
Bạn cũng có thể sử dụng đối số IODevice để io: fwrite/3 và để cho nó có giá trị nguyên tử standard_io khi bạn don không muốn nó hướng đến một số tập tin. Nếu không thì hãy cho nó tập tin.
Xem phần "Đầu vào/đầu ra tiêu chuẩn" trong tài liệu của io module.
Khi quá trình gọi io:format()
và các chức năng tương tự, quá trình gửi thông điệp yêu cầu io đến quá trình group_leader của nó. Vì vậy, một hack đơn giản là để mở một tập tin, và thiết lập nó như là group_leader của các quá trình sản xuất đầu ra. Đây là một ví dụ về việc chuyển hướng đầu ra của tiến trình shell tới một tệp.
1> {ok, F} = file:open("z", [write]).
{ok,<0.36.0>}
2> group_leader(F, self()).
3> io:format("Where am I going to appear?~n").
4>
Điều này sẽ chỉ chuyển hướng quá trình shell hiện tại, vì vậy bạn sẽ phải đặt group_leader cho tất cả các quy trình mà bạn muốn chuyển hướng đến tệp.
Các giải pháp có thể được tinh chế tất nhiên, ví dụ bằng cách đẻ trứng một quá trình máy chủ mà ủy nhiệm thông điệp yêu cầu io đến file xoay vv
Bạn có thể biên dịch lại mã của bạn với một phân tích biến đổi, biến đổi các cuộc gọi như
io:format("~p~n", "Hello world!")
vào cuộc gọi như
io:format(whereis(my_output_file), "~p~n", "Hello world!")
thêm vào đó bạn cần để thêm video này vào mã khởi động của bạn, và bạn đang thực hiện:
{ok, F} = file:open("file", [write]),
register(my_output_file, F),
- 1. Bash Scripting - vỏ lệnh đầu ra chuyển hướng
- 2. Chuyển hướng đầu ra lệnh "đặt" vào tệp nhật ký
- 3. Các khối mã chuyển hướng đầu ra đầu vào
- 4. Chuyển hướng đầu ra grep sang tệp
- 5. có cách nào để chuyển hướng đầu vào và đầu ra đến cùng một tệp không?
- 6. Vỏ Erlang từ trình duyệt?
- 7. C++ Đầu ra chuyển hướng
- 8. Chuyển hướng đầu ra từ một khối chức năng vào một tập tin trong Linux
- 9. Chuyển hướng đầu ra tiêu chuẩn và lỗi gắn vào cùng một tệp nhật ký
- 10. Chuyển hướng đầu ra Trace.axd
- 11. backclace glibc - không thể chuyển hướng đầu ra đến tệp
- 12. Làm thế nào để chuyển hướng đầu ra của hệ thống() vào một tệp?
- 13. Làm thế nào để chuyển hướng đầu ra của .exe vào một tệp trong python?
- 14. Cách chuyển hướng đầu ra của lệnh shell vào đầu vào tập lệnh Python?
- 15. Chuyển hướng vỏ i/o order
- 16. Chuyển hướng đầu ra bash sang tên tệp động
- 17. cách chuyển hướng đầu ra của lệnh sang hai tệp
- 18. Chuyển hướng đầu ra của một công việc cron
- 19. Viết đầu ra sqlplus vào một tệp
- 20. Chuyển hướng đầu ra bằng lệnh "màn hình"
- 21. Làm thế nào tôi có thể hướng đầu ra của QProcess vào một tệp?
- 22. Làm cách nào để chuyển hướng đầu ra của DBMS_OUTPUT.PUT_LINE tới một tệp?
- 23. Làm cách nào để chuyển hướng đầu ra của hàm chết sang một tệp trong Perl?
- 24. Nhúng vỏ Python từ xa vào một ứng dụng
- 25. Hadoop MapReduce - một tệp đầu ra cho mỗi đầu vào
- 26. Có thể chuyển hướng đầu ra của một tệp lô trong tập lệnh không?
- 27. Kịch bản lệnh Windows: Chuyển hướng TẤT CẢ đầu ra đến một tệp
- 28. Chạy lệnh shell với chuyển hướng đầu vào từ python 2.4?
- 29. ray - Chuyển hướng điều khiển đầu ra vào một tập tin
- 30. Cách chuyển hướng đầu ra bàn điều khiển sang một tệp văn bản
Rất tiếc! Có thể khá hữu ích – gleber