execvp

    -1熱度

    1回答

    我目前正在包裝一個命令行工具(espeak)用的Tcl/Tk,到目前爲止,我已經想通了這一點: load ./extensions/system.so package require Tk package require Tclx set chid 0 proc kill {id} { exec kill -9 $id } proc speak {} { gl

    2熱度

    1回答

    我試圖用fork()和execvp()調用創建多個進程,但到目前爲止我一直不成功。這是我想要做的: 進程A,B,C應該同時運行。當它們完成時,過程D應該運行。完成後,流程E和F應該運行。 我可以通過傳遞程序名和它的參數成功調用execvp(),但我不知道應該調用fork()和where的次數。我也知道如何調用wait(),但我不知道它應該在哪裏調用。 我該怎麼做?

    1熱度

    1回答

    我寫了一個程序,它模擬'$ ls -l | wc -c'就像使用管道的命令一樣。 現在我無法找到應該在這段代碼中使用waitpid或waitpid的位置。 另外我應該關閉管道? 請查看我的代碼並提出建議。 int main ( int argc , char *argv[]) { char *cmd_one_tokens[MAX]; /* Array of pointer to hold t

    0熱度

    2回答

    喜 如果我傳遞一個未知的命令execvp我得到這個錯誤的錯誤號: 「沒有這樣的文件或目錄」 時,我應該得到這個錯誤: 「命令未找到「 我該如何得到第二個錯誤?

    0熱度

    2回答

    我正在寫一個假殼,在那裏我創建一個子進程,然後調用execvp()。在正常的shell中,當我輸入一個未知的命令如'hello'時,它會返回'hello:Command not found'。但是,當我將hello傳入execvp()時,默認情況下它不會返回任何錯誤,只是繼續運行我的程序的其餘部分,就像沒有任何事情發生一樣。找出沒有實際運行的最簡單方法是什麼?這裏是我的代碼: if(fork()

    0熱度

    2回答

    我想在c中編寫一個shell,它主要工作,除了grep。每當我在shell中給出一個grep命令時,它都不會輸出任何內容。下面是我用來創建一個新的子進程,然後在其中運行execvp()的代碼部分。 dup2中的文件描述符(fd_in和fd_out)作爲參數傳遞給具有此代碼的函數。最有趣的是,當我給'grep'或'grep --help'時,它照常顯示。我錯過了什麼?或者用grep做一些特別的事情?

    1熱度

    1回答

    在我的程序中,我將用戶輸入並將其解析爲2d char數組。該陣列聲明爲: char parsedText[10][255] = {{""},{""},{""},{""},{""}, {""},{""},{""},{""},{""}}; 我使用fgets來抓取用戶輸入並用sscanf解析它。這一切都按我的想法運作。 在此之後,我想將parsedText傳遞給execvp,parse

    0熱度

    1回答

    我試圖做一些很簡單:填補字符**與論據我想在execvp呼叫C. 使用這是怎麼了這樣做的: if(argc >=1) { *nargv = "--action"; while(argc--) { printf("nargv1 => %s \t argv1 => %s \n", *nargv, *argv); *++nargv

    0熱度

    2回答

    我試圖在c程序中執行帶有參數的命令。 例如,當用戶執行我的程序時: 「./a.out ls -la」 程序應該用la選項執行ls。 但我不知道該怎麼做。 我的程序使用分叉。 我試着這樣說: pid = fork(); if(pid == 0){ execvp(argv[1], &argv[2]); }else{ wait(NULL); } 但它不工作。 我想作爲execvp

    0熱度

    4回答

    當前正在接收輸入linux shell命令的程序,並執行它們來創建子進程。 #include <sys/types.h> #include <sys/wait.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> int main(int argc, char * argv[]) { int pid, st