2017-02-06 50 views
-1

我們可以創建許多包裝腳本來調用特定的二進制文件並使用別名來指向不同的字符串。在exec系統調用中運行別名命令

我的需求是我們需要在exec系統調用中調用別名字符串。

如果我們直接在exec調用運行的字符串時,系統調用失敗

例:

af45sp01> alias | grep bulk 
bulkactivation=wrap_alias=''\''bulkactivation 1'\'' /iscp/node/bin/isnm_wrapper /iscp/space/scr/issp_bulk_activation' 

char *pgm_name = "bulkactivation"; 
     execl((char*)(const char*)path_name, 
      (char*)(const char*)pgm_name,0); 

上述execl的系統調用失敗。我認爲它無法在PATH中找到別名字符串,這是預期的。如何擺脫這個問題?

+3

別名是一個shell構造。要運行bash別名,執行的程序應該是'bash -c' – StoryTeller

+0

要使用'exec',您需要展開別名,並運行alias作爲別名的基礎命令。 – Ben

+1

您需要特別指示'bash'來擴展非交互式shell中的別名。另請注意,依賴別名可能是安全威脅。 http://unix.stackexchange.com/a/1498 –

回答

-2

使用ksh/bash命令作爲選項就像一個魅力。謝謝