|
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
char *env_init[]={"USER=unknown","PATH=/tmp",NULL};
int main()
{
int pid;
pid=fork();
printf("pid is %d\n",pid);
if(pid=0)
{
execle("/home/echoarg","./echoarg","myarg1","MYARG2",(char*)0,env_init);
printf("execle successfully\n");
}
waitpid(pid,NULL,0);
printf("waitpid successfully\n");
pid=fork();
if(pid=execlp("echoarg","echoarg","only1arg",(char*)0))
printf("execlp successfully");
exit(0);
}
echoarg的源码在/home下:
int main(int argc,char *argv[])
{
int i;
char **ptr;
extern char **environ;
for(i=0;i<argc;i++)
printf("argv[%d]:%s\n",i,argv);
for(ptr=environ;*ptr!=0;ptr++)
printf("%s\n",*ptr);
exit(0);
}
编译运行结果是:
pid is 0
waitpid successfully
execlp successfullyexeclp successfullypid is 4912
waitpid successfully
execlp successfullyexeclp successfully
为什么没有execle的运行结果?
其中/home下的echoarg运行成功,可以输出结果.
请教各位高手哪里出问题了? |
|