c -execl()使用参数(ping)中的整数



我一直在尝试使用fork()创建两个孩子到一个父程进程,然后为这两个孩子运行两个'不同的'命令。我正在尝试使用这些儿童流程来ping两个不同的网站。事实是,当执行第一个ping'命令时,它没有结束,我尝试通过传递-c数量来限制输出量来解决此问题,但由于某种原因,它没有完成工作。这是代码:

    pid = fork();
        if(pid!=0) {
          wait(&status);
          printf("----------------------------------------------------nn");
          printf ( " I am the parent my PID is %d, myPPID is %d, n ",getpid(),getppid());
          printf("---------------------------------------------------nn");
       }else {
         printf ( " I am the child , my PID is %d , my PPID is %d n",getpid(),getppid());
         printf("---------------------------------------------------nn");
         execl ( "/bin/ping","-c5", "sheffield.ac.uk",(char*)0);
         return 0;
       if(pid!=0){
         printf ( " I am the child , my PID is %d , my PPID is %d n",getpid(),getppid());
         printf("---------------------------------------------------nn");
       }else {
         printf ( " I am the child , my PID is %d , my PPID is %d n",getpid(),getppid());
         printf("---------------------------------------------------nn");
         sleep(2);
         execl ( "/bin/ping","-c5", "shu.ac.uk",(char*)0);
         return 0;
       }
  }
        break;

来自 execl 文档:

按照惯例,第一个参数应指向与正在执行的文件关联的文件名。

因此您需要替换

execl ( "/bin/ping","-c5", "sheffield.ac.uk",(char*)0);

例如

execl ( "/bin/ping", "ping", "-c5", "sheffield.ac.uk",(char*)0);

因为您不给文件名作为第一个参数,因此被" -c5"替换为" -c5",而您 ping 没有该选项

还请注意文档:

返回值

exec()函数仅在发生错误时返回。返回值为-1,设置ERRNO表示错误。


注意,您可以使用 popen 执行您的 ping ,还可以获取其产生的输出消息

相关内容

  • 没有找到相关文章

最新更新