execve

    3熱度

    2回答

    我的程序應該使用fork和exec系統調用。 exec應更改子進程,以便將另一個命令作爲參數並執行該命令。例如,顯示當日消息: ./myexec cat /etc/motd 這是我當前的代碼 extern char **environ; /* environment info */ main(int argc, char **argv) { /* argc -- number o

    0熱度

    1回答

    以下是我嘗試瞭解如何在兩個子進程之間進行正確管道的嘗試。我只是試圖將一個Linux命令的輸出傳遞給另一個(ls到cat)並讓程序成功返回。然而,我猜測第二個分叉的孩子被卡住了,父母永遠在等着這個孩子。很長一段時間,我一直在擺弄這段代碼,試圖找出它爲什麼會陷入困境。談到C語言編程時,我很喜歡noob,但我正在努力學習。 有沒有人知道爲什麼程序不會退出,但掛在貓? 任何幫助將不勝感激。 謝謝。 #in

    2熱度

    2回答

    我試圖運行Java應用程序,更具體的一個罐子編譯之一,採用的execve(c)中 類似的東西: char *cmd[] = {"a.jar"}; execve("a.jar",cmd,NULL); 一個好的工作,但當我試圖限制該程序可以使用類似的東西開的線程數: struct rlimit rlp; rlp.rlim_cur = rlp.rlim_max = limit_nproc; s

    0熱度

    1回答

    我從目錄中執行一個簡單的shell程序執行的程序,我可以運行與我的shell可執行文件在同一文件夾中的文件,但無法運行諸如ls.exe之類的程序。 令牌容器在下列元素中包含文件名作爲第一個元素和任何後續標記(例如輸入「ls.exe -l」中的「-l」)。 if (fork()) { int status; wait(&status); } else { std::ve

    1熱度

    1回答

    我正在寫彙編,我想弄清楚如何執行一個execve系統調用,而不是輸出打印到終端,我想知道它的存儲位置,所以我可以稍後使用它,有點像管道命令。 例如,這裏的組件,用於執行所述命令「其」經由execve的,基本上執行命令「$其中LS」: GLOBAL _start SECTION .TEXT _start: XOR EAX,EAX PUSH EAX PUSH

    4熱度

    2回答

    我想看看我在execve()函數中傳遞的環境變量是否真的被傳遞了,所以我做了這段代碼(Main.c): int main(){ char PATH[4]; strcpy(PATH, "bin"); char * newargv[] = {"./get","", (char*)0}; char * newenviron[] = {PATH}; ex

    1熱度

    2回答

    如何從C執行/打開/運行另一個程序,而不是阻止它,但讓它同時運行。然後我想做一些測試,如服務器/客戶端,然後如果這已經完成,我想殺死/關閉此程序。我已閱讀約 system() or execv() 但首先似乎阻止了等待結果,第二似乎只在Linux上工作?在最好的情況下,我希望有跨平臺或最低的MacOS/Windows/Linux(Ubuntu)工作解決方案。當我不再需要它時,我也需要關閉這個以

    0熱度

    1回答

    我試圖在64位Asm中模擬安全管execve教程(http://hackoftheday.securitytube.net/2013/04/demystifying-execve-shellcode-stack.html)。我不確定巴士錯誤來自哪裏。我在GDB中通過應用程序,但是直到我失去框架後才發生錯誤。如果有人知道發生了什麼,我很樂意聽取您的意見。 .section __DATA,__data

    2熱度

    2回答

    我找到了一種不帶參數調用unix外部命令(例如「ls」,「pwd」)的方法。它是這樣說: //Child process char cwd[1024]; getcwd(cwd, sizeof(cwd)); char *argv[] = {*args, NULL}//(ex.) {"ls", NULL} char *env[] = {cwd, NULL}; //concat():metho

    0熱度

    2回答

    我想顯示正在使用的execve()函數作爲參數傳遞給另一個進程2的環境變量: MAIN.C: int main(){ char USERNAME[10]; strcpy(USERNAME, "USERNAME="); for (int i=1;i<10;i++){ strcpy(USERNAME+i, "1"); } char P