繁体   English   中英

系统调用在CGI中不起作用

[英]System call is not working in cgi

我在fedora的CGI中开始一个新项目,这是我的代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {

    printf("Content-type:text/html\r\n\r\n");

    printf("<!DOCTYPE html>\n");
    printf("<html>\n");
    printf("<title>EWN Lab</title>\n");
    printf("<meta charset=\"UTF-8\">\n");
    printf("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n");
    printf("<body class=\"w3-light-grey\">\n");

    system("ls");                 // Problem comes due to this line

    printf("</body>\n");
    printf("</html>\n");
    return 0;
}

当我使用命令行编译并执行程序时,它可以正常工作。 但是,当我尝试通过浏览器执行时,它显示“内部服务器错误”

我正在使用apache服务器作为Web服务器。 有人知道在通过Web浏览器运行程序时,哪个用户将执行此操作吗?

我自己找到了解决方案。 谢谢@ user3386109。 由于此处的系统命令失败,因此我使用pip编写了另一个函数。 现在一切正常。

具有var-arg功能的函数如下所示

void system_ext(const char *format, ...) {
    char* string;
    va_list args;

    va_start(args, format);
    if(0 > vasprintf(&string, format, args)) string = NULL;
    va_end(args);

    if(string) {
        char buff[VLONG_STR_LEN] = {0};
        FILE* file = popen(string, "r");
        while(fgets(buff, VLONG_STR_LEN, file) != NULL);
        pclose(file);
        free(string);
    } else {
        printf("Error on formating string.\n");
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM