作者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