讀《The Ruby Way》之執行外部程式

2021-08-30 16:57:22 字數 1322 閱讀 9149

西班牙輸了,這次世界盃強隊的表現真是沒話可說了。

ruby裡呼叫外部程式的方法有三種,[b]system[/b]、[b]exec[/b]、[b]重音符(`)[/b]。

先看一下[b]system[/b]

# linux

system("rm", "/tmp/file1")

system("rm /tmp/file2")

system("ls -l | hea -n l")

# windows

system("notepad.exe", "myfile.txt")

system("cmd /c dir", "somefile")

system是無法捕獲外部命令的輸出的。

[b]exec[/b]和system很像,但是exec後邊的**是不會被執行的。

[b]重音符(`)[/b],是可以捕獲外部命令輸出的,也可以寫成[b]%x[/b]的形式。

listing = `ls -l`

now = `date`

listing = %x(ls -l)

now = %x(date)

可以使用[b]fork[/b]方法建立新程序,wait和wait2方法用來等待子程序的返回,waitpid和waitpid2可以等待特定的子程序。windows不支援fork。

pid1 = ford 

pid2 = ford

process.wait # 返回 pid2

process.wait2 # 返回 [pid1, 768],768是經過左偏移的退出狀態

pid3 = ford

pid4 = ford

process.waitpid(pid4, process::whohang) # 返回 pid4

process.waitpid2(pid3, process::whohang) # 返回 [pid3, 768]

pid和ppid分別返回當前程序及其父程序的程序id。可以用kill方法將unix式訊號傳送給程序。

process.kill(1, pid1)        # 把訊號1送給pid1

process.kill("hup", pid2) # 把訊號hup送給pid2

process.kill("sighup", pid3) # 把訊號sighup送給pid3

process.kill("sighup", 0) # 把訊號sighup送給自己

讀《浪潮之巔》

我真是井底之蛙,讀了此書才知道,原來it已經有上百年的發展歷史了,我出生之前的6 70年代,很多美國的8 9歲的孩子都開始學習程式設計了。程式設計只是一項普通的工作,而非之前所認為的高精尖的科學。雖然起步較晚,大學時候也沒有好好學習相關基礎知識,但遲到總比不到要好。不斷積累,不斷關注新技術,每天進步...

IOS NSTimer在主線程外繼續執行

轉至 我們通常在主線程中使用 nstimer 有個實際 遇到的問題需要注意。當滑動介面時,系統為了更好地處理 ui事件和滾動顯示,主線程 runloop 會暫時停止處理一些其它事件,這時主線程中執行的 nstimer 就會被暫停。解決辦法就是改變 nstimer 執行的mode mode 可以看成事...

SQL之全外連線,左外連線,右外連線,內連線

1.內連線 內聯接使用比較運算子 使用像 或 之類的比較運算子 根據每個表共有的列的值匹配兩個表中的行,根據這兩張表中相同列的條件,得出其交集。沒有inner join,形成的中間表為兩個表的笛卡爾積 select from customers c,orders o where c.id o.cus...