首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求达人帮忙解决一上有关问题啊关于解释器文件的

2013-01-18 
求达人帮忙解决一下问题啊,关于解释器文件的,下面这个程序是执行一个解释器文件的程序:test810.c#include

求达人帮忙解决一下问题啊,关于解释器文件的,
下面这个程序是执行一个解释器文件的程序:test810.c
#include "apue.h"
#include <sys/wait.h>

int main(void)
{
pid_t pid;
if((pid==fork())<0){
   err_sys("fork error");
}
else if(pid==0){
if(execl("/home/rao/CHART8/testinterg","testinterg","myarg1","MY ARG2",(char *)0)<0)
  err_sys("execl error");
}
if(waitpid(pid,NULL,0)<0)
   err_sys("waitpid error");
exit(0);
}
解释器文件是:/home/rao/CHART8/testinterg
解释器文件的内容如下:
    #!/home/rao/CHART8/echoarg foo
echoarg.c 是一个回送每一个命令行参数的程序。
代码如下:
  #include "apue.h"
int main(int argc,char *argv[])
{
int i;
for(i=0;i<argc;i++)
printf("argv[%d]:%s\n",i,argv[i]);
exit(0);
}

#include "apue.h"
int main(int argc,char *argv[])
{
int i;
for(i=0;i<argc;i++)
printf("argv[%d]:%s\n",i,argv[i]);
exit(0);
}
编译执行test810.c,结果提示程序:
  waitpid error:no child processes.
为什么会这样???????????????
[解决办法]


if((pid==fork())<0){
   err_sys("fork error");
}

这儿有一句是有问题,应该改为:

if((pid = fork())<0){
   err_sys("fork error");
}

其实是你的这个进程没有创建成功……

热点排行