2013-04-13 37 views

回答

4

路徑中的代字號是特定於shell的東西。如果第一個字符是波形符號和斜槓(或字符串的波浪形尾端),則可以執行的操作是:用代碼HOME(可從getenv獲得)替換波形符號的值。

如果第二個字符是而非是斜線,則最有可能的形式是~user/path。然後你必須提取用戶名並使用例如getpwnam獲取包含該用戶主目錄的用戶的密碼條目。

13

您可以使用下面

#include <stdio.h> 
#include <wordexp.h> 

int main(int argc, char* argv[]) { 
    wordexp_t exp_result; 
    wordexp(argv[1], &exp_result, 0); 
    printf("%s\n", exp_result.we_wordv[0]); 
} 
+2

如果你在函數中使用它,你會想添加'wordfree(&exp_result);'以避免內存泄漏。 – ishmael