[英]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作为输出。 请解释
谢谢 :)
注意事项:
当您调用这样的函数返回错误时,请检查errno
以查看其内容(例如, printf("r = %d errno = %d",r,errno);
最可能的原因是execl
找不到程序abc
它不在路径上查找,并且可能不在当前目录中查找。 在第一个实例中,尝试使用完整路径(例如execl( "/usr/me/abc", NULL );
它可能不会停止它的工作,但是传统上是将程序名称作为第一个参数传递(因此, execl( "/usr/me/abc", "/usr/me/abc", NULL );
如果您确实使execl
正常工作,它将不会返回您的代码以告诉您它已成功执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.