读书人

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

发布时间: 2013-01-18 10:22:42 作者: rapoo

求达人帮忙解决一下问题啊,关于解释器文件的,
下面这个程序是执行一个解释器文件的程序: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");
}

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

读书人网 >C语言

热点推荐