小编Ant*_* L.的帖子

在localhost上,如何选择一个空闲端口号?

我正在尝试进行进程间通信,因为我无法弄清楚如何在Windows下使用命名管道,我以为我会使用网络套接字.一切都在当地发生.服务器能够在单独的进程中启动从属服务器并侦听某个端口.奴隶完成他们的工作并将结果提交给主人.我如何确定哪个端口可用?我想我不能听80或21端口?

我正在使用Python,如果这会减少选择.

谢谢!

python sockets port ipc

145
推荐指数
4
解决办法
10万
查看次数

停止嵌入式Python

我正在将Python解释器嵌入到C程序中.但是,可能会发生这样的情况:运行某些python脚本时PyRun_SimpleString()会遇到无限循环或执行太长时间.考虑PyRun_SimpleString("while 1: pass");在阻止主程序阻止我认为我可以在一个线程中运行解释器.

如何停止在线程中运行的嵌入式解释器中执行python脚本而不会终止整个过程?

是否可以将异常传递给解释器?我应该将脚本包装在其他可以收听信号的脚本下吗?

PS:我可以在一个单独的过程中运行python,但这不是我想要的 - 除非它是最后的手段......


更新:

所以,它现在有效.再次感谢Denis Otkidach!

如果我看到这一点,你必须做两件事:告诉解释器停止并return -1在与PyRun_SimpleString()运行的同一个线程中.

要停止,有一些可能性:PyErr_SetString(PyExc_KeyboardInterrupt, "...")或者PyErr_SetInterrupt()- 第一个可能让Python运行更多指令然后停止,后者立即停止执行.

return -1使用Py_AddPendingCall()注入一个函数调用成Python执行.自2.7和3.1版以来,文档提到它,但它也运行在早期的Pythons上(这里是2.6).从2.7和3.1它也应该是线程安全的,这意味着你可以在不获取GIL(?)的情况下调用它.

所以可以重写下面的例子:

int quit() {
    PyErr_SetInterrupt();
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

python multithreading process embedded-language python-c-api

23
推荐指数
1
解决办法
5048
查看次数

链接各种编译器编译的库

我想更详细地询问一下我最近在这里得到的答案(第三篇): 编译语言基础知识

如果我用C和MinGW写,我链接到VC编译的C++库 - 它会工作吗?我怎么事先知道?

换句话说,如果我能够在没有警告的情况下创建链接到该C++ .dll的.exe,并且我能够运行(只运行,没有进一步测试).exe,这是否意味着它有效?在某些时候它不会被核心转储吗?

为了完全确定,我是否需要自己重新编译库源以及与之链接?

我知道有时连接C++和C代码可能会有问题但是如何知道它何时起作用?

PS:是的,我看到 使用库编译了...... 我只是觉得我的问题略有不同.

c dll linker mingw compilation

1
推荐指数
1
解决办法
1926
查看次数