c - execl 不会执行

标签 c exec

正在处理一个项目,当我调用 execl() 时,它不起作用。它在 fork 之后被调用,并且应该重新执行当前文件。 (参数在文件前面声明):

argument = argv[0];
int err =execl(argument, argument, left, "1", NULL);
if (err == -1)  printf("never execled");

我读过的所有内容都让我觉得这应该可行。第一个参数指定路径,第二个参数指定要执行的文件,第三个参数是字符串,第四个参数是占位符,以便当执行 execl 时 arc == 3,第四个参数是空终止符。

有人可以帮忙吗?

最佳答案

argv[0] 仅包含文件名,但不包含 execl 所需的完整目录路径。

尝试这样:

char *cwd;
cwd=malloc(255);
getcwd(cwd,255);
strcat(cwd,"/");
strcat(cwd,argv[0]);

并在execl中使用上面构造的cwd

关于c - execl 不会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19387513/

相关文章:

c++ - 如何在 C/C++ 中将 12 位图像转换为 8 位图像?

c - OPENCV 在 cvMat (C) 中保存原始矩阵并绘制它时出现问题

c - 在 Palm OS 应用程序中使用系统的标准编辑菜单

c - 警告 : assignment makes integer from pointer without a cast [enabled by default]

linux - Ubuntu 服务器上的 Bash : find: missing argument to `-exec'

java - 如何从另一个java应用程序运行一个java应用程序并在主程序返回后保持运行?

编译带有依赖项的 .c 文件

c - 为什么这段代码没有被执行?

java - 从 Java 运行时执行批处理文件时, native DOS 命令无法运行

php - 通过 PHP(树莓派)运行 C 程序