Создать веб-страницу для демонстрации кода C

0

У меня есть код C, который принимает файл как вход, обрабатывает его и дает номер в качестве вывода. Я хочу создать веб-страницу html, которая берет путь к файлу как входной, передает его в код C. C-код обрабатывает его, а вывод (integer) отображается в браузере. Не могли бы вы предложить мне, как это сделать? Есть ли готовые программные средства для этого?

  • 1
    Если это домашнее задание, прочитайте ваш учебник. Если это для частного использования, просто не делайте этого. Вам нужно будет использовать библиотеку HTTP и справиться со всей скукой низкоуровневой обработки протоколов, чтобы достичь эквивалента пары строк PHP.
  • 0
    @kuroineko: нет ничего плохого в том, чтобы вызывать внешний подпроцесс (код C) или вызывать его как библиотеку для генерации данных для веб-страницы (вы можете использовать любой язык для реализации этой части, включая php).
Показать ещё 3 комментария
Теги:
demo

1 ответ

1

Если C-код используется для создания утилиты командной строки, вы можете вызвать его при создании веб-страницы:

#!/usr/bin/env python
import subprocess
from bottle import request, route, run, template # http://bottlepy.org/

command = ['wc', '-c'] # <-- XXX put your command here

@route('/')
def index():
    filename = request.query.filename or 'default' # query: /?filename=<filename>
    output = subprocess.check_output(command + [filename]) # run the command
    return template("""<dl>
        <dt>Input</dt>
            <dd>{{filename}}</dd>
        <dt>Output</dt>
            <dd>{{output}}</dd></dl>""", filename=filename, output=output)

run(host='localhost', port=8080)

Запустите этот скрипт или вставьте его в консоль Python, затем откройте свой браузер и передайте имя файла (путь на сервере) в качестве параметра запроса:

$ python -mwebbrowser http://localhost:8080/?filename=/etc/passwd

wc -c печатает количество байтов для каждого входного файла. Он выполняется на сервере.


Если C-код доступен как библиотека; вы можете использовать модуль ctypes для вызова функции C из Python, например, для вызова printf() C из библиотеки libc:

#!/usr/bin/env python
import ctypes
from ctypes.util import find_library

try:
    libc = ctypes.cdll.msvcrt # Windows
except OSError:
    libc = ctypes.cdll.LoadLibrary(find_library('c'))

n = libc.printf("abc ")
libc.printf("%d", n)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню