看板 LinuxDev 關於我們 聯絡資訊
請問使用exec時的路徑要如何指定 找了很久的google 幾乎都是一開始就指定好路徑 ex. /bin/uname 但是如果我想要自己輸入指令(指令的程式也是自己寫,ex. uname2) 然後讓exec去跑,那要怎麼做?? 我設定指令存入cmdstr字串,並且已經將最後的'\n'改為' ' execl(" ",cmdstr,0); ^^^ 這裡我不知道要怎麼填 如果是要用execlp 我將指令擷取到buffer(不要參數) execlp(buffer,cmdstr,0),這樣可以用,但是參數的效果卻不出來 我只會execlp("sh","sh","-c",cmdstr,0)的用法 但是這樣搜尋到的是system call的程式 可是我想指定自己寫的程式(但是不要加到system call的編號裡),也不要用sh (我老師希望我們做出一個簡單的小shell,呼叫的程式也都要自己寫) 有方法讓路徑 = 自己指定的路徑/自己做的檔名 嗎 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.31.176
phterry:try execvp() 02/09 01:07
CriLit:exec 系列有兩種丟參數的方式 02/09 13:39
CriLit:一種是用 argv 的方式傳入,另一種則是以參數的方式傳入 02/09 13:41
CriLit:是以有沒有 v 來分辨, 如, execv, execve, execvp 這些是用 02/09 13:42
CriLit:argv 的方式當作參數, 就像 main 那樣的方式 02/09 13:42
CriLit:剩餘的話就要這樣傳, execl("name",arg0,arg1,...,0); 02/09 13:43
CriLit:而 execlp, execvp 搜尋的路徑是看 PATH 這個變數 02/09 13:44
CriLit:如果是以你的需求, 用 sh -c 的確是比較快 02/09 13:45
CriLit:不然就用自行拆解出各個參數, 再依序丟改 exec 函數 02/09 13:46
CriLit:至於路徑問題, 你可以使用 excl, execv, execle, execeve 02/09 13:46
CriLit:這幾個函式, 他可以直接丟絕對路徑 02/09 13:47
clarkman:^^成功了~~~多謝 02/10 15:57