问题标签 [c-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5858 浏览

performance - 什么 dbus 性能问题会阻止它进入嵌入式系统?

从我的阅读来看,由于存在守护进程,dbus 性能应该比其他消息传递 ipc 机制慢两倍。

在讨论使用哪种Linux IPC技术的so问题的问题时,有人提到了性能问题。除了两倍慢的因素之外,您还看到性能问题吗?您是否看到阻止 dbus 在嵌入式系统中使用的问题?

据我了解,dbus 是否适用于小消息。如果需要传递大量数据,一种解决方法是把数据放到共享内存或者堆里,然后用dbus通知。根据讨论的其他 ipc 机制是:信号、匿名管道、命名管道或 FIFO、SysV 消息队列、POSIX 消息队列、SysV 共享内存、POSIX 共享内存、SysV 信号量、POSIX 信号量、FUTEX 锁、文件-使用 mmap、UNIX 域套接字、Netlink 套接字、网络套接字、Inotify 机制、FUSE 子系统、D-Bus 子系统的支持和匿名共享内存。

我应该提到另一个列出要求的问题(尽管它以 apache 为中心):

  • 面向数据包/消息
  • 处理点对点和一对多通信的能力
  • 没有层次结构,没有服务器和客户端
  • 如果一个端点崩溃,必须通知其他端点
  • 现有 Linux 发行版的良好支持
  • Apache 存在一个“绑定”,目的是创建动态页面——尽管这太具体了,在一般嵌入式 dbus 使用讨论中可以忽略它

另一个关于性能的问题提到了提高性能的技术。考虑到所有这些,我想在嵌入式系统中使用 dbus 时问题或缺点应该更少。

0 投票
2 回答
625 浏览

php - 从 C 生成 PHP 操作码/字节码

假设我想用 C 编写一个小型编译器,它可以从选择的自定义语言 ( typoscript ) 生成 PHP 字节码。我该怎么做?PHP 是否提供 API?或者我需要破解默认 PHP 编译器的部分内容吗?

编辑:在更一般的说明中,我可以用 C 语言编写它并生成 PHP 操作码(因此它可以与其他 PHP 代码兼容),而不是用 PHP 编写解析器吗?

编辑 2:这可以作为 PHP 的扩展来完成,所以我会研究一下。

0 投票
2 回答
496 浏览

mysql - C API 用于连接 C & SQL 数据库

我正在尝试使用 C API 将我的 C 代码连接到我的 SQL。我想知道是否有人有任何好的初学者资源,所以我可以加快速度。我要做的只是将数据存储在我用 SQL 制作的表中。如果它有帮助,我正在我的 Mac 上使用 MySQL。谢谢!

0 投票
1 回答
1377 浏览

c - DBus:使用直接 dbus API 测量数据交换的时间

我正在寻找一个示例 c 代码来测量在不使用任何 glib 绑定​​的情况下在两个简单应用程序之间发送数据所花费的时间,我在许多帖子中看到http://www.matthew.ath.cx/misc/dbus有一个例子,但链接现在不存在。

我的代码发送没有任何错误,但接收应用程序没有收到任何内容,还附加了 service.conf 文件。从其他一些网站获得此代码:

0 投票
1 回答
206 浏览

python - Python C-Api 32 位 PyDict_Check 访问冲突,Win7,Python 2.66

我正在尝试在 VS2010 中将 Python C-Api 用于 32 位项目。

我已经安装了 64 位和 32 位 Python。为了区分这两个版本,我将 32 位 dll 重命名为“python26_32.dll”。我已经使用 VS dumpbin 和 lib 工具创建了一个相应的导入 .lib 文件“python26_32.lib”(参见。https: //adrianhenke.wordpress.com/2008/12/05/create-lib-file-from-dll/)。

我已经调整了“pyconfig.h”并取消了#pragma comment(lib...)声明的注释。

这些项目可以很好地编译为 32 位。调用时运行 exe 会导致访问冲突PyDict_Check。其他方法调用之前工作正常(例如Py_Initialize,,PyRun_SimpleString... PyDict_New

这是我的小例子:

我注意到,“PyDict_Check”不在 dll 的导出中。它在 python 头文件中定义。

我试图调整“路径”(在 Windows 中和通过 api 中(参见示例)),但这没有帮助。

64 位版本工作正常(更改相关的 VC++ 目录和Py_SetPythonHomeStatement.

最让我困惑的是,c-api 的某些部分有效,而其他部分则无效。

刚试过PyDict_CheckExact,这个行得通。

非常感谢您的帮助。

0 投票
1 回答
314 浏览

python - Python 如何为派生自 C 类型的类的对象分配内存?

假设我们在 C_xxx中创建了一个包含扩展 object的 Python 模块xxx,我们执行以下操作:

Python如何为d幕后分配内存?

Eli Bendersky 的文章Python 对象创建序列是我发现的最接近的,但它似乎没有涵盖这种情况。

注意:这里已经有一个答案:我要问作者他是否会考虑将他的答案迁移到这里,因为这是对一个格式不正确的问题的一个很好的答案。即他已经弄清楚我需要问什么问题并回答了。但是其他人很难找到资源,所以我认为最好将其与适当的问题相匹配。

当然欢迎其他答案,但请先检查上面的链接以确保它尚未涵盖!还有对现有答案的任何评论,请您等到它被重新定位(如果作者选择重新定位它)。

0 投票
2 回答
627 浏览

python - python 3 C-API 扩展 ImportError

我在 mac OS X 10.10.2 上使用 Python3。我是 python C-API 的新手,所以我正在尝试来自“Python Cookbook” http://chimera.labs.oreilly.com/books/1230000000393/ch15.html的 C-API 扩展的简单示例。我认为 Python2 和 Python3 之间存在一些差异。我遵循了 Python3 文档,但找不到我的案例不起作用的原因。

直到用 distills 构建(python3 setup.py buildpython3 setup.py build_ext --inplace)给我sample.so文件。我也编译sample.csample.o.

但是,当我从 python 导入时,我收到如下所示的错误消息,我不明白发生了什么。下面显示了在 ipython3 中运行的错误消息。

请帮助我解决扩展模块的问题。谢谢!

以下是文件pysample.csample.csample.h和的代码setup.py

pysample.c

样本.c

样本.h

安装程序.py

0 投票
0 回答
260 浏览

hard-drive - SMART 有 API 吗?

目前正在开发一个 NAS 系统,我想使用 SMART 来监控 NAS 中硬盘的状态。我已经查看了诸如 smartmontools smartctl 和 smartd 之类的工具,但是我希望更好地控制我告诉 NAS 在发生不同错误时做出反应的内容。smartd 支持运行脚本,但并不可取。在 c 中是否有一个更可取的 api 可以用来与 SMART HDD 通话?

0 投票
1 回答
968 浏览

postgresql - 使用 c api 处理 postgresql jsonb

Postgres 扩展开发

我正在使用从 ubuntu 可信赖的主仓库安装的postgres-9.4的 C API。这可能是一个愚蠢的问题,但请耐心等待。

我想使用一个函数将 a 转换cstringJsonb*定义的结构

http://doxygen.postgresql.org/jsonb_8h.html

已经在

http://doxygen.postgresql.org/jsonb_8c.html

即 function Datum jsonb_in ( PG_FUNCTION_ARGS ),但是我不确定是否可以以可移植且安全的方式从 C API 调用此函数。乍一看,它似乎是为了被 postgres 调用。

我也可以使用该功能jsonb_from_cstring

http://doxygen.postgresql.org/jsonb_8c.html#ab23eca28d5880f86a0943d71c90d6654

但它是在 json.h 中声明和定义的,jsonb.c而不是在 json.h 中声明的,因此与此函数链接不是一个非常干净的解决方案。我尝试在 libpq.so 中找到符号jsonb_from_cstring,但是没有。我猜我需要一个非标准的 postgres 版本?

所以问题是,从 C API中将 a 转换cstring为结构的最佳方法是什么?Jsonb*

编辑:

该扩展从外部源获取 json 数据作为字符串,并且应该能够将该字符串存储在一个Jsonb类型中

0 投票
1 回答
101 浏览

c - 使用 C API 需要#include

我正在尝试使用 Tango C API,但在 SDK 中的所有文件中,都有对#include <tango-api/public-api.h>. 我做了一些研究,但找不到公共探戈 API 或它是什么的地方。SDK不应该包含所有必需的头文件吗?

什么是公共 API,我如何获得它?