execvp

    0熱度

    1回答

    我在使用fork()和execvp()嘗試執行進程時遇到了問題。我有一個結構Pcb其具有參數數組(args): #define MAXARGS 2 struct pcb { pid_t pid; // system process ID char *args[MAXARGS]; // program name and args int arrivaltime

    0熱度

    1回答

    我的代碼是: execvp(command, args); 參數表是char* args[] 命令char* command 例如用於ls -l,命令是LS和args是-l但執行後爲什麼 execvp(command, args)我只得到ls的結果不是ls -l ??

    2熱度

    2回答

    這只是較大程序的一小部分,但是我試圖從execvp獲得輸出 我使用dup2正確設置了execvp,它指示它成管道。 當我使用read來讀取管道的全長時,我的問題就來了。我不知道每次輸入execvp有多大,因爲根據輸入的不同,它可能會有所不同。 int fd[2]; pipe(fd); pid_t pid = fork(); if (pid == 0) {

    1熱度

    1回答

    我想執行輸入,我從套接字獲得。我把消息緩衝區放入一個char *[]中,它被終止爲空,它適用於ls,但它不適用於像ls -la這樣的參數。 char *CMD[msg.c+1]; CMD[msg.c] = NULL; 這裏是我解析和使用execvp。 //parse char *tmp = NULL; tmp = strtok(msg.v,space); for(i = 0; i <

    0熱度

    1回答

    我創建了一個shell,它在我使用system(1)時有效,但規格說不適用。 我想在最後使用execvp,我並不太確定如何去做。任何幫助的機會,將不勝感激。 代碼 - > char *token = NULL; char line[LINE_MAX]; char *line2 = NULL; char *tempraryToken = NULL; char *command = NULL;

    0熱度

    1回答

    我正在c中做一個次要的shell實現,並且我被卡住了。 我想能夠重定向stdin和stdout,但我很困惑。在我的shell中,當我想啓動一個程序時,我使用execvp函數。現在我想能夠重定向stdout,所以如果我運行另一個進程,輸出應該被重定向到一個文件而不是屏幕。 下面是示例代碼: pid_t pid; // Child process pid = vfork(); if((pid

    23熱度

    2回答

    execvp被這樣定義: int execvp(const char *file, char *const argv[]); 這排除代碼如此被使用: const char* argv[] = {"/bin/my", "command", "here", NULL}; execvp(argv[0], argv); 這是一個意外遺漏? const_cast是否安全?或者做一些execvp實現

    0熱度

    1回答

    將忽略的信號設置爲SIG_DFL我正在編寫一個庫,其中fork()和execvp()啓動另一個程序。據我所知,execvX()將「自定義」信號處理程序重置爲SIG_DFL,但它不會將任何忽略的信號處理程序設置爲SIG_DFL。 記住它是一個庫,我無法控制用戶將如何處理這些信號,將被忽略信號的信號處理程序設置爲SIG_DFL是一個好主意嗎? 如果是這樣,是否有某種方法可以將所有信號處理程序一次設置爲

    0熱度

    1回答

    我試圖按名稱在c中執行應用程序,然後運行 我想知道名稱是否合法。是否有任何 檢查c的方法,並找出應用程序是否存在於PATH環境中? 感謝

    1熱度

    2回答

    execvp(argv[1], &argv[1]) execvp()的第二個參數究竟做了什麼?