作者clarkman (涼雨)
看板LinuxDev
標題[問題] exec的路徑如何指定
時間Mon Feb 9 00:34:52 2009
請問使用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
1F:→ phterry:try execvp() 02/09 01:07
2F:推 CriLit:exec 系列有兩種丟參數的方式 02/09 13:39
3F:→ CriLit:一種是用 argv 的方式傳入,另一種則是以參數的方式傳入 02/09 13:41
4F:→ CriLit:是以有沒有 v 來分辨, 如, execv, execve, execvp 這些是用 02/09 13:42
5F:→ CriLit:argv 的方式當作參數, 就像 main 那樣的方式 02/09 13:42
6F:→ CriLit:剩餘的話就要這樣傳, execl("name",arg0,arg1,...,0); 02/09 13:43
7F:→ CriLit:而 execlp, execvp 搜尋的路徑是看 PATH 這個變數 02/09 13:44
8F:→ CriLit:如果是以你的需求, 用 sh -c 的確是比較快 02/09 13:45
9F:→ CriLit:不然就用自行拆解出各個參數, 再依序丟改 exec 函數 02/09 13:46
10F:→ CriLit:至於路徑問題, 你可以使用 excl, execv, execle, execeve 02/09 13:46
11F:→ CriLit:這幾個函式, 他可以直接丟絕對路徑 02/09 13:47
12F:→ clarkman:^^成功了~~~多謝 02/10 15:57