当前位置: 技术问答>linux和unix
execl()函数
来源: 互联网 发布时间:2017-01-28
本文导语: fork()创建了子进程后怎么用execl()加载另一个程序,而不是单纯的复制父进程?急需答案!!! | 例子都在这里 自己去看http://blog.chinaunix.net/u3/99348/showart_2184215.html | execl("/home/wangm/程序","pri...
fork()创建了子进程后怎么用execl()加载另一个程序,而不是单纯的复制父进程?急需答案!!!
|
例子都在这里 自己去看http://blog.chinaunix.net/u3/99348/showart_2184215.html
|
execl("/home/wangm/程序","print",(char *)0)
改execl("/home/wangm/程序/print","print",(char *)0)
走了
|
有几点需要注意一下:
1. print这个名字,是有一个现成的命令使用的,最好是换一个以免混淆。因为命令print放在execl()中,你可能会看不出效果。
2. 你也许应该使用execlp()函数。如下:
execlp("print","print",(char *)0)
3. 使用execl(),应该确,你这个用户对保路径上的所有目录都有执行权限。
4. 我觉得你误解了,在我看来,execl()的第一个应该是"/home/wangm/程序/print"。
execl("/home/wangm/程序/print","print",(char *)0); /* 假设 '程序' 是个目录 */
|
那程序当然得是你系统里有的了!加上路径.
int execl(const char *path, const char *arg, ...);
从这函数原型的第一个参数你看不出来?
比如刚才那个博客里的一个例子
execl("/bin/echo", "echo", "executed by execl", NULL)
int execl(const char *path, const char *arg, ...);
从这函数原型的第一个参数你看不出来?
比如刚才那个博客里的一个例子
execl("/bin/echo", "echo", "executed by execl", NULL)