【发布时间】:2017-03-23 13:51:53
【问题描述】:
我有两个 C 程序,Project1A.c 和 Project1B.c。我正在尝试使用 execl() 从 Project1B 内部执行 Project1A 但到目前为止它不起作用。
Project1B.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main ()
{
pid_t pid;
switch((pid = fork()))
{
case -1:
printf("I'm sorry, fork failed\n");
break;
case 0:
execl("Project1A.c", "./prog", NULL);
printf("EXECL Unsucessfull");
break;
default:
printf("This is some parent code\n");
break;
}
printf("End of Program\n");
return 0;
}
【问题讨论】:
-
你不能执行一个C源文件。你必须运行一个编译好的程序。
-
子进程必须
wait,以及测试exec的返回值是否发生错误。 -
“C 程序”与计算机关系不大。它是对抽象机器指令的抽象描述。另一方面,对于真正的计算机,程序与 C 几乎没有关系。程序只是一个程序。 C 只是创建程序的一种方式,但它不是结果的一部分。
-
@dmi:返回值没有太多需要测试的地方。如果成功,则不会返回。如果返回,则返回值为-1。不过,检查
errno可能不会有什么坏处,看看问题出在哪里。 -
编译它。类似
cc -o Project1A Project1A.c。