即時通訊嘗試爲我的系統編寫一個腳本,從目錄結構中填充靜態html文件。產卵或從球拍系統
id更喜歡使用racket來完成任務,但我有diffaculty發現一些關鍵特性,最重要的是產生子處理的能力,比如C調用「system」。
什麼是調用命令行並從球拍內部捕捉輸出的最簡單方法。
即時通訊嘗試爲我的系統編寫一個腳本,從目錄結構中填充靜態html文件。產卵或從球拍系統
id更喜歡使用racket來完成任務,但我有diffaculty發現一些關鍵特性,最重要的是產生子處理的能力,比如C調用「system」。
什麼是調用命令行並從球拍內部捕捉輸出的最簡單方法。
實際上有兩個函數的工作方式類似於C中的系統,它們是:system
和system*
。 (有產卵關子過程的其他方式,但是這兩個是最簡單的工作很相似,許多其他語言。
在這兩個,system
是最簡便的一個,並在命令把你想作爲一個運行。字符串這樣,你可以做的事情,如:
(system "ls -l")
雖然這是一個稍微複雜的使用,我喜歡system*
好一點,因爲它需要的參數作爲一個列表,這意味着你可以更輕鬆與球拍一起玩。
(system* (find-executable-path "ls") "-l")
現在,您可以執行諸如更改正在運行的命令的輸入和輸出端口,甚至通過Racket的parameters更改當前工作目錄。具體而言,您需要current-directory
,current-input-port
和current-output-port
。
您還可以使用多個with-
函數來更方便地更改輸入和輸出端口。
把它放在一起,例如,我可以將運行ls -l
的結果作爲字符串使用以下代碼保存。 (請注意,在球拍better ways to get the contents of your root directory,這僅僅是使用球拍的shell腳本的例子。)
(parameterize ([current-directory "/"])
(with-output-to-string
(λ()
(system* (find-executable-path "ls") "-l"))))
只要搜索的文檔:http://docs.racket-lang.org/search/index.html ?q = system –
thanka用於指向我的正確方向,「系統」對於搜索引擎來說是一個渾濁的術語,所以很多結果 –
對於一般的搜索引擎,當然。但語言特定的文檔可以足夠縮小它們。 –