这是一个非常奇怪的问题,但我仍然很好奇。我有一个源代码a.c
,其中有一些魔术代码可以在同一目录中编译不同的代码b.c
。因此,在运行时期间,b.c
被编译并可能已运行。
我为这个问题很难道歉,但这是否已经完成了之前的事情?如果没有,有没有办法这样做?
答案 0 :(得分:2)
<强>交流转换器强>:
#include <stdio.h>
int main() {
puts("a: compiling b.c");
system("gcc -o b b.c");
puts("a: executing b");
system("./b");
puts("a: done");
return 0;
}
<强> b.c 强>:
#include <stdio.h>
int main() {
puts("b: hello world");
return 0;
}
<强>输出强>:
a: compiling b.c
a: executing b
b: hello world
a: done
答案 1 :(得分:1)
是的,您可以fork
和exec
运行编译器,然后再次fork
和exec
来运行已编译的代码。另一种选择是使用system
函数来运行编译器,然后再次调用system
来运行已编译的代码。