繁体   English   中英

当定义的程序作为参数传递时,execl不起作用

[英]execl not working when the program in which it's defined is passed as argument

下面的代码在Linux上另存为abc.c。 execl()在下面的代码中不起作用。 有人可以解释为什么吗?

#include<stdio.h>
#include<unistd.h>
#include<sys/time.h>
int main()
{
   int r;
   char ch;
   printf("Enter any character");
   scanf(" %c",&ch);
   printf("%c",ch);
   r=execl("abc",NULL);
   printf("r = %d",r);
   return 0;
}

r = -1作为输出。 请解释

谢谢 :)

注意事项:

  1. 当您调用这样的函数返回错误时,请检查errno以查看其内容(例如, printf("r = %d errno = %d",r,errno);

  2. 最可能的原因是execl找不到程序abc它不在路径上查找,并且可能不在当前目录中查找。 在第一个实例中,尝试使用完整路径(例如execl( "/usr/me/abc", NULL );

  3. 它可能不会停止它的工作,但是传统上是将程序名称作为第一个参数传递(因此, execl( "/usr/me/abc", "/usr/me/abc", NULL );

  4. 如果您确实使execl正常工作,它将不会返回您的代码以告诉您它已成功执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM