execvp

    0熱度

    1回答

    我就需要能夠使用execvp執行某些命令的C程序的工作,我也有實現這一點: execvp(arguments[0], arguments); 其中arguments[]是一系列刺痛。大多數情況下,我的實現工作正常 - 例如如果arguments爲{"touch", "somefile.txt"},則按預期調用touch命令。 然而,當我試圖傳遞ls與參數是像{"/bin/ls", "-a", ".

    2熱度

    2回答

    我有一個守護進程正在運行,這可能會產生一個進程在傳入連接。這是通過使用execvp()和fork()完成的。 問題是,進程不應以root身份運行,並且進程依賴於正確的用戶環境。所以即時通訊尋求一種方式來加載用戶環境。 當前通過設置gid和uid作爲另一個用戶執行該過程。我已經嘗試過的是使用命令su -l user -c command,因爲某些原因,它不起作用。 有人知道我如何加載用戶環境(尤其是

    0熱度

    1回答

    我遇到了execvp和fork問題。當我運行代碼時,即使在創建文件時,exec也不起作用。它只是返回一個「錯誤的地址」錯誤。另外,printf(「在孩子中」)在我運行時不會出現。我的代碼如何在不打印「在孩子中」的情況下進入execvp? pid = fork(); switch(pid) { case -1: fprintf(stderr,"ERROR WITH

    2熱度

    1回答

    我目前正在努力解決這個錯誤。我正在編寫一個shell模擬器,使用fork()來執行使用execvp();的命令。 幾乎每個我試圖解析到shell的命令都能正常工作,除了ls沒有參數。 如果我嘗試執行LS -lah,一切正常,但一個簡單的LS不會,收到以下錯誤: ls: fts_open: No such file or directory 這裏是我的代碼片段:(只是必需的) pid = for

    4熱度

    3回答

    我目前正在寫我的課是應該作爲一個很基本的殼轉讓。我差不多完成了,但是我遇到了execvp和我的字符數組參數問題。這是我的代碼的一小段代碼。 //Split the left content args istringstream iss(left); while(getline(iss, s, ' ')){ v.push_back(s); } //Get the split st

    1熱度

    2回答

    我已經試過真的很難,但不能想出一個方法來打印一個錯誤,如果 find -name \"filename" 沒有找到任何文件。我使用至今的代碼如下: char *argv[]; argv[0]="find"; argv[1]="-name"; argv[2]=strcat(str,"\abc.txt"); argv[3]=NULL; pid

    1熱度

    1回答

    我想使該程序後忽略完成 「execvp(的argv [1],argv的+ 1);」如果第一個參數未定義,但getopt解析所有以「 - 」開頭的參數。如何在第一個未定義的參數後忽略所有參數?這可能使用getopt?目前,我有一些代碼: #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <getopt.h>

    0熱度

    1回答

    我試圖執行文件使用fork和execvp,但我遇到一些錯誤。我還沒有找到任何解決方案,我在這裏在線,因爲我沒有從我的exevp中得到任何錯誤,也沒有運行。這裏是我的代碼: pid_t child; int status; child = fork(); char *arg[3] = {"test","/home/ameya/Documents/computer_sci

    0熱度

    1回答

    我試圖運行一段代碼將執行幾個UNIX命令,這些命令存儲在所述陣列lineArray其例如:lineArray = {"ls -l", "ls", "pwd", NULL}; 問題是此代碼只會打印出數組中的第一個命令,即使我已經在調試中看到我的函數根據execvp MAN正確解析命令及其參數。 任何形式的幫助將不勝感激。 int startProcesses(int background) { i

    0熱度

    1回答

    最近,我試圖在C上做出一個良好的實踐,現在我開始執行一個命令。 它告訴我,我應該char**?但我有一些概念錯誤嗎? 請幫幫我。 代碼在這裏 int excution(int cnt, char token[][BUFSIZE],int *t_token) { setenv ("PATH", "/bin:/bin/usr:", 1); //printf("%s",getenv