下面的代码在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作为输出。请解释
谢谢:)
答案 0 :(得分:1)
有几点需要注意:
当你调用这样一个返回错误的函数时,请检查errno
以查看它是什么(例如printf("r = %d errno = %d",r,errno);
最可能的原因是execl
找不到程序abc
- 它没有查看路径,可能没有#&# 39;看看当前目录。在第一个实例中,请尝试使用完整路径(例如execl( "/usr/me/abc", NULL );
它可能不会让它停止工作,但传统的方法是将程序的名称作为第一个参数传递(所以,execl( "/usr/me/abc", "/usr/me/abc", NULL );
如果您 让execl
工作,它将无法返回您的代码,告诉您它已经这样做了。