今天在工作上碰到在common Line及程式與程式之間溝通的問題。
問了同事之後,其實是程式傳遞參數的問題。先在一下幾個例子
common line:ls a.txt ls "a b.txt" ls a b.txt"
a b.txt是個檔案,但a b中間有空白所以需要用上述的方式來表示。
c++:
先介紹一個好用的function。
int system( const char * command );
這指令再我學C++時並沒有用過,而是等我接觸Linux並在上面寫code後才知道。
這function好用的原因是,Linux提供很多common可以用,有些事如果能用common完成就用common完成。
回歸正題,看一下C++的用法:
system("ls a.txt"); system("ls "a b.txt""); system("ls a b.txt");
基本上可以看出與common的使用上不同地方。
個人覺得" 字串包含空白"(第二個範例)的使用放是最好用。
另外為什麼需要特別處理呢?
可以看一下
int main(int argc, char *argv[]) { ... }
這看似簡單且大家常用,但常常會忽略了()內的參數。
argv是個矩陣負責接收執行是傳遞的參數。
如:ls a.txt
在執行時argv會收到兩個字串
argv[0] = "ls"
argv[1] = "a.txt"
收取的方式以空白來區隔。所以發現了嗎?
當輸入ls a b.txt時,程式會收到,
argv[0] = "ls"
argv[1] = "a"
argv[1] = "b.txt"
這就是問題的中心了。
2009年3月12日 星期四
common Line and C++ 在Linux對空白的處理
2008年12月18日 星期四
透過wpa_cli來使用wifi
幾天前,接觸了這command。沒想到在Linux的世界中,透過wifi連上網路是這麼的麻煩。同事說,這時才想起"$icrosoft"的好阿。
step1:
在command下確認wpa_supplicant & dhclient wifi0是否執行。
![]()
如果沒有後面就無法看了,原諒小弟,沒果沒有要怎麼啟動,我就不知道。
step2:
可以用wpa_cli來確認。
wpa_cli list_network若沒有可以用add_network來加入。
wpa_cli add_networkNote:加入後會取得一個ID,之後set_network要指定network ID
Note:也可以用remove_network來移除網路。
wpa_cli remove_network這裡的network說實在,我不知道要用哪個名稱來形容比較正確。
network可以同時間有好幾個,但enable只能有一個。
step3:
搜尋AP,並設定protocols key....
wpa_cli scan wpa_cli scan_relults須先打搜尋才能顯示結果。
![]()
之後set 要使用的AP(以下以dlink為例)
set_network 0 ssid “dlink” set_network 0 key_mgmt NONENote:WPA-PSK (WPA pre-shared key)
WPA-EAP (WPA using EAP authentica-tion)
IEEE8021X (IEEE 802.1x using EAP authentication and,optionally, dynamically generated WEP keys)
NONE (plaintext or static WEP keys)
If not set this defaults to "WPA-PSK WPA-EAP".
set_network 0 pairwise NONENote:CCMP (AES in Counter mode with CBC-MAC, RFC 3610, IEEE 802.11i/D7.0)
TKIP (Temporal Key Integrity Protocol, IEEE 802.11i/D7.0)
NONE (deprecated)
If not set this defaults to "CCMP TKIP".
set_network 0 wep_key0 1234567890 set_network 0 wep_tx_keyidx 0 enable_network 0之後可以用ifconfig 或iwconfig來確認是否有抓到IP。
2008年12月10日 星期三
VirtualBox講座(1)--安裝滑鼠外掛
先來簡介一下,這東東。它提供使用者在32或64位元的 Windows、Solaris 及 Linux 作業系統上虛擬另外的機器執行其它x86的作業系統,使用者可以在 VirtualBox 上安裝並且執行 Solaris、Windows、Linux、OS/2 Warp、OpenBSD 及 FreeBSD 等系統作為客戶機操作系統。 (Reference:Wiki)
安裝VirtualBox或VMware通常一定會安裝的東西就是今天的重點。滑鼠外掛,是個很好用的東西。單純安裝後,如果畫面是VirtualBox,滑鼠要移到其他地方是無法移到。
這時需要以下步驟:
1.點選安裝客端額外功能。
cd / cd cdrom sudo ./VBoxLinuxAdditions-x86.run
2008年12月9日 星期二
tar使用之二
這幾天碰到另一個問題,
因為工作上的需要常常要被分OS或只打包home
但問題來了,所要tar的檔案不是所有的都需要
這時tar的parameter提供了個方法過濾。
這時只需要加個--exclude [file name]
而且這可以多個過濾。tar --exclude CVS --exclude root -cvpf backup.tar ./這是tar 會將CVS & root的檔案過濾掉。 如果像home\etc 再home底下有etc但root 下也有個etc, 可以下 --exclude homeetc 這樣會將home\etc給過濾掉。
2008年12月8日 星期一
tar時有碰到隱藏擋的問題
最近因為工作需要用到Linux 在用tar時老是碰到隱常檔都無法打包起來。 後來在網路上找到的問題,原來DOS用習慣也有問題。
後面加的*是我的習慣(DOS常常用到)。 但這裡如果加上只會tar非隱藏檔。 如果要tar隱藏檔需要改成如下:tar -cvpf image.tar /home/*tar -cvpf image.tar /home/因為時間緊迫所以也沒時間去追究了。