Perlperl 不能
perl 不能 exec
到二進制
在我全新安裝的 Debin 中,預設安裝了 perl 解釋器(換句話說,我還沒有其他 perl 包)。但是,嘗試這樣做:
$ls a.cpp b.cpp $ perl -e 'system "g++ -o a.out a.cpp b.cpp"; exec "a.out"'
沒有輸出(沒有錯誤,什麼都沒有)。perl 正確使用了該
system
命令(即 - 它創建了a.out
執行檔),但無法派生它。為什麼?
答案在文件中,
exec
但很難看出您是否不知道自己在尋找什麼。如果 LIST 中有多個參數,則使用 LIST 中的參數呼叫 execv p (3)。如果 LIST 中只有一個元素,則檢查參數是否有 shell 元字元,如果有,則將整個參數傳遞給系統的命令 shell 進行解析 (…)。如果參數中沒有 shell 元字元,則將其拆分為單詞並直接傳遞給 execv p (…)。
在所有情況下,命令名稱都需要進行路徑查找(通過 Perl 或通過 shell):如果它不包含 a
/
,則在命令搜尋路徑 ( ) 中查找它,該路徑$PATH
通常不包含目前目錄.改成
exec "./a.out"