expect中的close,wait,exit,return
#!/usr/bin/expect -f set ipaddr "localhost" set passwd "iforgot" spawn ssh [email protected]$ipaddr #spawn 意思是執行命令,expect內命令,shell中不存在 expect { "yes/no" { send "yes\r"; exp_continue} "password:" { send "$passwd\r" } } expect "]# " send "touch a.txt\r" #意思為傳送命令 send "exit\r" expect eof exit
在上面的指令碼中第4句的spawn命令實際上是運行了ssh(一個程序,並且這個程序是spawn的子程序,即spawn是一個父程序),並且有一個預設的全域性變數spawn_id繫結到了ssh。
spawn ssh [email protected]$ipaddr
而close是用來關閉與spawn_id對應的子程序的連線,並且將子程序殺死。並且close在關閉連線後會返回一個數,系統會獲得這個數以及子程序是怎麼死的相關資訊。
但是如果close後面沒有wait的話,子程序雖然死了,但是依然存在程序列表中,此時這樣的子程序叫做殭屍程序。殭屍程序會佔用程序號,但是系統所能使用的程序號是有限的,如果大量的產生僵死程序,將因為沒有可用的程序號而導致系統不能產生新的程序
所以wait說的專業一點是監視一個程序的終止。簡單點就是負責給子程序收屍的。
另外close,wait可以隱含地產生。expect和interact都能檢測到當前程式的退出,並隱含地執行一個close,但是wait只會在父程序退出時(即指令碼退出時)隱含產生。所以對於只有一個子程序的指令碼在exit後可以不寫wait。
exit退出一個程序,exit後面可以跟一個控制代碼,用來指定要退出的程序(exit -onexit $handler);也可以不跟,那就是預設退出當前程序(一般會是指令碼)。並且exit會在指令碼的末尾被隱含地產生。
return 從一個過程返回。
問題:close 與exit的區別
相關推薦
多線程中sleep和wait的區別,以及多線程的實現方式及原因,定時器--Timer
守護 驗證 取消 技術 方法 代碼 安全 接口 art 1. Java中sleep和wait的區別 ① 這兩個方法來自不同的類分別是,sleep來自Thread類,和wait來自Object類。 sleep是Thread的靜態類方法,誰調用的誰去睡覺,即使在a線程裏調用b
Linux下程序相關:fork(),wait(),exec()
1採用命令列操作時,所建立程序的pid編號、程序執行、撤銷過程; 為實現此部分要求,我們編寫一小段程式。它的設計想法是,接收使用者的輸入,直到得到我們需要的輸入,才退出。當我們完成程式程式碼編寫,併成功編譯,執行這段可執行程式時,就建立了一個程序。程序建立後,可以通過ps命
expect中的close,wait,exit,return
#!/usr/bin/expect -f set ipaddr "localhost" set passwd "iforgot" spawn ssh [email protected]
容易忽略的expect指令碼問題,暗藏的殭屍程序,wait命令不要漏掉
問題描述 前幾天有個小需求,用到expect指令碼去迴圈的傳送一些資料,主要問題程式碼如下: #! /usr/bin/expect while {true} { set timeout 60 spawn telnet ip port expect "]'."; send "******
Java 內部類,多執行緒中Synchronized與wait,notify的使用
工作內容: 1.成員內部類 與成員方法,屬性的訪問許可權一致 2.靜態內部類 修飾符 stactic 類名{...} 3.匿名內部類 new 類名()/介面名(重寫介面方法) 4.區域性內部類 程式碼塊中 5.執行緒Thread wait,noti
thread中sleep和wait方法的區別,以及lock和synchronized的區別
最近在專案中設計業務請求邏輯這一塊,運用到了thread的一些知識,所以就又去特定的研究了一下! 首先 sleep和wait的區別: 1、我們通過檢視原始碼得知,sleep是Threa的靜態方法,而wait方法是Object的成員方法; 2、sleep沒有synchnori
java學習筆記——java中對象的創建,初始化,引用的解析
初始 學習筆記 style article 學習 base 表達 如果 bsp 如果有一個A類。 1、例如以下表達式: A a1 = new A(); 那麽A是類,a1是引用。new A()是對象。僅僅是a1這個引用指向了new A()這個對象。 2、又如: A
數組中出現最多的數,以及接口 Map.Entry<K,V>
int try tools pub length rem value contains span 1 package test.tools; 2 3 import java.util.Collection; 4 import java.util.Collecti
Android 當打開“開發人員模式”中的“不保留活動”後,程序應當怎麽保持正常執行
京東 java 天才 以及 click get message 查看源 create Android 當打開“開發人員模式”中的“不保留活動”後,程序應當怎麽保持正常執行咧。。? 在這幾天,我一直在糾結這個問題。從發現,程序出現這個問題,是由於“開發人員模式”中的“不保
notify,wait,synchronized實現線程間通知
java take 計數器 釋放 com 測試結果 con 最大 runnable wait阻塞線程釋放鎖;notify使wait所在的線程被喚醒在次獲得鎖,並執行,但要等到notify所在的線程代碼全部執行後! 示例代碼如下: package com.vhbi.serv
在am中定義消息集束,並在CO中驗證之後拋出異常。
void 按鈕 span lua throws ansi log oaf ext.get 需求:在頁面上點某個按鈕的時候,需要收集所有異常並拋出。 -------------------------------------------方式1:參考 EBS OAF開發中的錯誤
音頻中采樣位數,采樣率,比特率的名詞解釋(轉)
工程 性能 dvd 工作室 轉化 術語 意思 普通 時間間隔 采樣位數: 采樣位數可以理解為采集卡處理聲音的解析度。這個數值越大,解析度就越高,錄制和回放的聲音就越真實。我們首先要知道:電腦中的聲音文件是用數字0和1來表示的。所以在電腦上錄音的本質就是把模擬聲音信號轉換成
關於Jquery中radio的屬性設置,是attr,還是prop問題
border b- load size 基本 lis property 然而 javascrip 自己做的一個小的項目員工項目管理中,由於用到Ajax,所有用了jquery,而在人管理中的,人的性別設置單選radio,默認為男的,源代碼如下 <input typ
PHP在foreach中對$value賦值無效,應該用 ‘鍵’ 或者 &$value的形式
image blank key warn 運行 clas 應該 發現 建議 首先我們看下這段代碼: foreach ($data as$value) { $value[‘name‘] = ‘Hehe‘; } $data中原始的數據為: array(
linq中日期格式轉換或者比較,程序報錯說不支持方法的解決辦法
格式 var lec fun edi nbsp diff sql 方法 public void TestMethod1(){using (var _context = new hotelEntities()){var rq = DateTime.Now.Date;var q
sql server中的全局變量,常用的沒有多少...以後看看就行
detail 技術分享 服務 @* version 變量 名稱 tail identity 全局變量格式: @@*** 這些變量有系統維護,不需要我們自己定義,一般都是用來查看信息。 在存儲過程中 用得最多的 @@error,判斷有沒有錯誤信息。 一、@@versio
C++ string中的幾個小陷阱,你掉進過嗎?
stl 試題 賦值 clu ror ati world mod iostream C++開發的項目難免會用到STL的string。使用管理都比char數組(指針)方便的多。但在得心應手的使用過程中也要警惕幾個小陷阱。避免我們項目出bug卻遲遲找不到原因。1. 結構體中的
在pfsense中設置多WAN後,網銀無法登陸的解決!
pfsense 多wan 網銀 無法訪問在pfsense中設置多WAN後,網銀登陸一般會失效。出現這個問題原因大多是網銀的安全機制問題 ,銀行網站訪問不允許登陸用戶的IP地址短時間發生變化。解決辦法是指定網銀訪問的443端口流量走某一個固定的網關。下面以pfsense2.34的設置為例:設置好的規則如下:20
php class中public,private,protected的區別,以及實例
ons report acc per cnblogs 自己 context php undefined 一,public,private,protected的區別 public:權限是最大的,可以內部調用,實例調用等。 protected: 受保護類型,用於本類和繼承
sqlserver數據庫 表中字段值有空格,如何去除空格(例如char (5) 存入數據不足5位時sqlserver會自動補空格)
ltrim blog class 有時 找到 logs head 字段 div 普通的空格 前後的空格,使用LTrim和RTrim即可,例如:LTrim(RTrim(Name)) 中間的空格,使用replace函數替換,例如:Replace(Name,‘ ‘,‘‘)