我有一个C代码,它接受一个文件作为输入,处理它并给出一个数字作为输出。我想构建一个html网页,它将文件路径作为输入,并将其提供给C代码。 C代码处理它,输出(整数)显示在浏览器中。你能建议我怎么做吗?是否有任何预建的软件可以做到这一点?
答案 0 :(得分: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
module从Python调用C函数,例如,从printf()
库调用libc
C函数:
#!/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)