2013-10-20 101 views
0

我有一個任務來編寫一個c程序,該程序可以使用fork和exec在$ PATH中列出的所有目錄中搜索目錄。我的問題是我如何得到的方式,然後我就可以在我的代碼中使用它與EXECL

#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <unistd.h> 
#include <sys/wait.h> 

int main(int argc, char* argv[]) { 
    int pid = 0; 
    for(int i = 0; i < argc; i++) { 
    if (pid = fork() != 0){ 
     printf("Arg%d: %c\n", i, *argv[i]); // replace with exec ls -l <dir>/<arg> 
     return 0; 
    } 
    } 

    return 0; 
} 
+4

With ['getenv()'](http://en.cppreference.com/w/c/program/getenv)? –

+1

請記住,'argv [0]'是* your *程序的名稱。 –

+0

@JOACHIMPILEBORG你是對的,我錯過了。 –

回答

3

你可以使用getenv()(男子3 GETENV)PATH環境變量從$ PATH路徑。將該字符串複製到char*中,然後使用':'作爲分隔符將其與strtok()(man 3 strtok)分開。您應該將原始字符串複製到新的char*中,因爲您從getenv()獲得的指針實際上指向環境內部,並且strtok()將修改您傳遞給它的參數。然後您可以爲每個子字符串分叉一個循環。

+0

謝謝,它工作。 –