2015-02-12 51 views
-3

我正在寫一個shell。我需要一個函數來確定在 這個用戶是否是一個有效的內建命令的shell中輸入的命令。我不知道如何去做這件事。如何使一個函數來確定是否有什麼是我正在編寫的shell的內置命令

#include <unistd.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <sys/wait.h> 
#include <sys/stat.h> 
    int is_builtin(command_t* command) { 
    // TODO: Iterate through `valid_builtin_commands` 
    while (valid_builtin_commands[i] != NULL) 
    i++ 
    if(valid_builtin_commands[i] == command){ 
     return true 
     } 
    return -1; 
} 

即時通訊設法完成更多的沿着這些限制在我可以使用的圖書館線。

+1

這是完全不清楚你在問什麼。沒有什麼是內置命令或'command_t'的概念,你也沒有試圖做任何事情。 – 2015-02-12 01:42:11

+0

您將需要提供一個內置命令列表 – 2015-02-12 01:44:58

+0

最有可能的是,您將擁有一個shell內置命令表,您可能正在編寫shell,並且該表將包含命令名。您可以編寫代碼來搜索該表(可能在使用'qsort()'對其進行排序並使用'bsearch()'進行搜索)以查找所提供的名稱。 – 2015-02-12 01:45:37

回答

-1

我有一個神奇的水晶球它說:

int is_builtin(command_t* command) { 
    return (command->flags & CMD_BUILT_IN) != 0; 
} 

試一下!您可能必須在command_t結構中定義flags,並在分析命令輸入時實例化command_t對象時填充該對象。另外,要在某個頭文件中提供CMD_BUILT_IN常量。

相關問題