QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 733|回复: 2

execl系统调用无法返回

[复制链接]
发表于 2004-5-13 20:49:14 | 显示全部楼层 |阅读模式
[code:1]#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <fcntl.h>

main()
{
   pid_t pid;
   
   printf("befor fork\n");
   
   
   switch(pid=fork())
   {
      case -1 :
      perror("fork error");
      break;
      case 0 :
      execl("/bin/ls","ls",(char*)0);
      perror("execl error");
      break;
      defaut :
      wait((int*)0);
      printf("execl  compelet\n");
      exit(0);
      }
      }[/code:1]

这个程序是用fork调用产生两个进程,子进程用execl系统调用执行ls命令,父进程等待只到子进程结束,然后输出“execl compelet”。可是我发现在进行了execl调用以后并没有输出“execl compelet”,这是为什么啊??我错在那里呢?
发表于 2004-5-13 21:36:19 | 显示全部楼层
呵呵,我试了一下
发现了一个小错误
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <fcntl.h>

main()
{
   pid_t pid;
   
   printf("befor fork\n");
   
   
   switch(pid=fork())
   {
      case -1 :
      perror("fork error");
      break;
      case 0 :
      execl("/bin/ls","ls",(char*)0);
      perror("execl error");
      break;
      defaut : ===> default: 少了一个l了
      wait((int*)0);
      printf("execl  compelet\n");
      exit(0);
    }
}
回复

使用道具 举报

 楼主| 发表于 2004-5-13 21:44:32 | 显示全部楼层
谢了,我太粗心了
不过很奇怪,少了一个l编译居然通过了
不解   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 08:49 , Processed in 0.041384 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表