gpt4 book ai didi

c - 使用popen编译外部程序

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:39 25 4
gpt4 key购买 nike

我正在创建一个在线法官。为此,我正在编写一个 CGI c 脚本,它获取程序内容并编译程序。

这是我编译外部 c 程序的函数。

char *compile_program(char *compile_script){
printf("%s\n", compile_script);
compile_script = "gcc /var/www/FilebCamFz.c -o /var/www/FilebCamFz";
FILE *output_file;
output_file = popen(compile_script, "w");

char *output, *full_output, *full_error;
output = malloc(50000);
full_output = malloc(50000);
full_error = malloc(50000);

setbuf(stderr, full_error);
setbuf(stdout, full_output);

if(output_file == NULL){
// Some error
fprintf(stderr, "Compilation failed. Try again.\n");
return full_error;
}
else{
// If command executed successfully
while (fgets(output, 5000000, output_file) != NULL){
strcat(full_output, output);
}

if (pclose (output_file) == 0){
return full_output;
}
else
fprintf (stderr, "Could not run more or other error.\n");
return full_error;
}

//return EXIT_SUCCESS; }

使用ls, free -m 命令调用函数时,输出符合预期。

但是当运行像 python -v 等命令时,会得到一个空的输出。

在运行像 gcc/var/www/FilebCamFz.c -o/var/www/FilebCamFz 这样的命令时,我在 pclose() 上得到了一个标准错误.

所以我的问题是,popen 出现这种异常行为的原因是什么。以及如何通过 popen()

编译外部程序(c、c++、python、java 等)

最佳答案

我们最终使用docker容器解决了这个问题。

关于c - 使用popen编译外部程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34573799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com