编写python扩展
2024-08-29 21:27:28
代码:
#include <Python.h>
static PyObject *
spam_system(PyObject *self, PyObject *args)
{
const char *command;
int sts; if (!PyArg_ParseTuple(args, "s", &command))
return NULL;
sts = system(command);
return PyLong_FromLong(sts);
} static PyMethodDef SpamMethods[] = {
{"system", spam_system, METH_VARARGS,
"Execute a shell command."},
{NULL, NULL, , NULL} /* Sentinel */
}; static struct PyModuleDef spammodule = {
PyModuleDef_HEAD_INIT,
"spam", /* name of module */
NULL, /* module documentation, may be NULL */
-, /* size of per-interpreter state of the module,
or -1 if the module keeps state in global variables. */
SpamMethods
}; PyMODINIT_FUNC
PyInit_spam(void)
{
return PyModule_Create(&spammodule);
}
编译选项:
releaee版
dll名字必须为spam.pyd
测试:
>>> import spam
>>> dir(spam)
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'system']
>>> spam.system('dir')
驱动器 G 中的卷是 ll6_za
卷的序列号是 C0F5-30DE
G:\temp\ConsoleApplication1\Release 的目录
2018/03/19 00:38 <DIR> .
2018/03/19 00:38 <DIR> ..
2018/03/19 00:36 746 ConsoleApplication1.exp
2018/03/19 00:36 27,307 ConsoleApplication1.iobj
2018/03/19 00:36 33,648 ConsoleApplication1.ipdb
2018/03/19 00:36 1,942 ConsoleApplication1.lib
2018/03/19 00:36 512,000 ConsoleApplication1.pdb
最新文章
- spring applicationContext.xml和hibernate.cfg.xml设置
- 让Response.Redirect页面重定向更有效率
- CSS实现多个Div等高,类似表格布局
- git push to nas
- git push throws error: RPC failed; result=22, HTTP code = 411的解决办法
- IrregularGridCollectionView处理不定宽度的标签cell
- Java IO(一)
- JavaScript 弹窗
- Spring MVC中Ajax实现二级联动
- 基于android的实时音频频谱仪
- 15一个NoSql数据库
- Git的使用详解
- 【noip模拟】tree
- tomcat管理监控工具:probe(可代替Tomcat Manager)
- python学习第四天笔记整理
- Java中net.sf.json包关于JSON与对象互转的坑
- Windows Server 2016-管理站点复制(二)
- 《DSP using MATLAB》Problem5.16
- 解决 jQuery validation插件 valid()方法总是返回true的问题
- 007 爬虫(Scrapy库的使用)