execl在其所在的程序';已定义的作为参数传递
下面的代码在linux上另存为abc.c。它的execl()在下面的代码中不起作用。谁能解释一下原因吗execl在其所在的程序';已定义的作为参数传递,c,linux,exec,C,Linux,Exec,下面的代码在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=exe
#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;
}
#包括
#包括
#包括
int main()
{
INTR;
char ch;
printf(“输入任何字符”);
scanf(“%c”和“ch”);
printf(“%c”,ch);
r=execl(“abc”,空);
printf(“r=%d”,r);
返回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
工作,它不会返回到您的代码来告诉您它这样做了更改为
execl(“./abc”,(char*)空);
并检查errno
以确定失败的原因。我尝试过。/abc,即使这样也不起作用。需要键入NULL??我在其他程序中从未这样做过。好的,我将检查错误号。感谢From:参数列表必须由NULL指针终止,并且,由于这些是可变函数,因此此点ter必须为强制转换(char*)NULL。