execvp

    0熱度

    1回答

    我想在C語言中爲OS項目構建一個shell。當我做重定向部分時,問題即將到來。 ls工作正常,但是當我做ls > somefile。它給我一個錯誤「ls:can not access>:沒有這樣的文件或目錄」。這裏是我的代碼部分 while(in){ argv[c]=strdup(in); \\in is output of strtok applied on input strin

    -1熱度

    1回答

    我正在用C++編寫一個簡單的shell程序。當我將參數傳遞給execvp時,特別是對於ls命令,我收到ls: cannot access H��p����: Protocol error。其他命令也會出現類似的錯誤。 我的策略是解析輸入到vector<vector<char>然後將其轉換爲char **。 這裏是下面的轉換代碼: //input is parsed from command-lin

    -1熱度

    1回答

    我需要幫助,我正在嘗試在minix3中創建一個shell,並且我想創建自己的「ls」命令,所以此刻我正在使用execvp命令。唯一的問題是,我希望它在一行中輸出,而不是在他們自己的行上輸出每個目錄。我一直試圖讓這個正確的相當一段時間,我似乎不能得到它的權利。我不確定這是否可行,但對於如何實現最終產品而不必使用system()將不勝感激!我的代碼的 例子: char* arg[] = {"ls",

    0熱度

    1回答

    我正在使用該程序運行shell命令,該命令通過命令行參數使用系統調用execvp()和fork()。這裏arglist是一個二維數組,其中包含命令名稱及其參數列表。我將命令名稱作爲第一個參數,將arglist數組作爲第二個參數。但它不起作用。 execvp()的手冊頁說,它會在PATH變量定義的目錄中默認查找給定的命令,這就是爲什麼我只傳遞命令名。 #include<stdio.h> #incl

    1熱度

    3回答

    我正在寫一個小殼來學習C.現在我想執行自定義命令,但它不工作。 $ ./a.out OS>ls 10357: executing ls failed to execute ls : (2: No such file or directory) 我不能使用系統調用來執行自定義命令,我應該使用execvp和fork。但爲什麼它現在工作?整個代碼 #include<sys/stat.h>

    3熱度

    1回答

    我試圖實現一個shell。我將創建一個hist數組來存儲最後的10個命令,我希望能夠稍後檢索以執行。所以,我試圖找到一種方法來獲取所有命令行參數,一旦我將它們存儲在該hist數組中。 提供了一些代碼,gettoks()是獲取和分析命令行輸入的函數。函數gettoks()返回一個指向字符串的指針數組。每個字符串都是包含字母,數字,。和/的單詞,或者是包含其中一個特殊字符的單個字符串:()<> | &

    1熱度

    1回答

    我們有兩個C++程序,p1和p2。 p2分叉並啓動3個子進程,每個子進程通過execvp()調用p2的二進制可執行文件。 如何在調試p1時添加p2的gdb斷點並將其調試到p2中?

    1熱度

    1回答

    命令我有命令字符串我想執行的數組通過調用execvp(): char* commands[] = ["ls -l", "ps -a", "ps"]; char* command = commands[0]; ... 如何執行與execvp的命令?

    2熱度

    1回答

    我試圖通過使用StrictHostKeyChecking選項的execvp來運行rsync。 這是我的代碼: #include <unistd.h> int main() { char *argv[] = {"rsync", "[email protected]:/tmp", "/home/tmp/", "-e 'ssh -

    1熱度

    2回答

    我們知道我們可以在Linux中使用ln file1 file2創建硬鏈接,這將使得file2成爲file1的硬鏈接。 但是,當我嘗試通過使用C程序來做到這一點時,我遇到了問題。以下是C代碼。 #include<stdio.h> #include<string.h> #include<unistd.h> int main(int argc, char *argv[]) { if