Chinaunix

标题: 关于应用execlp实现自定义函数的问题,参数传递问题? [打印本页]

作者: computerzanz    时间: 2009-05-15 10:52
标题: 关于应用execlp实现自定义函数的问题,参数传递问题?
大家好/
关于execlp()用法网上都是以调用ls为例子的,如果想在子进程中实现自己定一的函数那?
程序如下
if(proFlag==0)
{
   printf("in child\n");
execlp("Max","Max","444","22",(char *)0);
perror("execlp");
}
else
{
   sleep(5);
   wait(&n);
  printf("IN parent:");
  printf("%d",n);
}
结果之显示了in child,后面没显示,也没有错误信息,查看进程列表有个max的僵尸进程,如果将max改为系统ls命令就能实现列目录功能。
将execlp改为execl(/。。。),结果相同
问题一:为什么max没执行?(执行的华会打印最大值,本例中会打印444)
问题二:父进程中打印n为11,但子进程中没有exit(11)阿
敬请菜鸟老鸟不吝赐教@@@谢谢大家

Screenshot-1.png (93.62 KB, 下载次数: 40)

Screenshot-1.png

作者: computerzanz    时间: 2009-05-15 10:53
标题: 关于应用execlp实现自定义函数的问题,参数传递问题?
难道是参数传递问题?该怎么传递那?
作者: 5毛党党员    时间: 2009-05-15 10:58
Max是你自己写的程序?那要加路径
作者: computerzanz    时间: 2009-05-15 10:59
标题: 回复 #3 5毛党党员 的帖子
在环境变量里加了
execl(“绝对路径”);也不行。。。
作者: lihoo_hoso    时间: 2009-05-15 15:02
子进程实现自己定义的函数?

如果是此函数在这个进程里,也不会用exec来调用吧?

如果max函数在父进程内也有定义的话,为什么不直接在子进程内调用max函数呢?

if(proFlag==0)
{
   printf("in child\n");
   Max("444","22");
}
else
{
   sleep(5);
   wait(&n);
   printf("IN parent:");
   printf("%d",n);
}

作者: computerzanz    时间: 2009-05-15 16:34
标题: 回复 #5 lihoo_hoso 的帖子
我的意思是想子进程单独运行自己的程序即max()
max在父进程里没有定义,是一个单独的可执行文件,max内定义为int main(int argvc,char *agrv[])
关键是怎么在exec函数中将整数值传递???
作者: computerzanz    时间: 2009-05-15 22:12
标题: 关于应用execlp实现自定义函数的问题,参数传递问题?
菜鸟老鸟帮帮忙阿,怎么没人回帖??如何在execv(),里传递main()所需参数??
作者: computerzanz    时间: 2009-05-17 16:56
标题: 哦了
明白了,谢谢大家




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2