日期:2014-05-16  浏览次数:20761 次

execl()函数
fork()创建了子进程后怎么用execl()加载另一个程序,而不是单纯的复制父进程?急需答案!!!

------解决方案--------------------
例子都在这里 自己去看http://blog.chinaunix.net/u3/99348/showart_2184215.html
------解决方案--------------------
那程序当然得是你系统里有的了!加上路径.
int execl(const char *path, const char *arg, ...);
从这函数原型的第一个参数你看不出来?
比如刚才那个博客里的一个例子
execl("/bin/echo", "echo", "executed by execl", NULL)<0)

这不就是在执行/bin/echo吗?

man execl看详细
------解决方案--------------------
探讨

我自己编写了一个程序print,放在哪里合适?
我之前把它放在自己新建的一个文件夹(/home/wangm/程序)下,
execl("/home/wangm/程序","print",(char *)0)
运行结果:permission denied
那里有问题?

------解决方案--------------------

有几点需要注意一下:

1. print这个名字,是有一个现成的命令使用的,最好是换一个以免混淆。因为命令print放在execl()中,你可能会看不出效果。

2. 你也许应该使用execlp()函数。如下:
C/C++ code

execlp("print","print",(char *)0)

------解决方案--------------------
那么多人都说了 你写的
execl("/home/wangm/程序","print",(char *)0)
正确的应该是
execl("/home/wangm/程序/print","print",(char *)0)

你还没看到区别?