小编vy3*_*y32的帖子

Python子进程模块不会在segfault上返回stdout

我正在从Python运行C可执行文件,这个可执行文件有时会出现段错误.当它发生段错误时,子进程模块不会在stdout或stderr中返回任何内容.

示例代码:

import subprocess

proc = subprocess.Popen(['./a.out'], stdin=subprocess.PIPE,
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()
print 'out: "%s"' % out
print 'err: "%s"' % err
print proc.returncode
Run Code Online (Sandbox Code Playgroud)

来源a.out是:

int main() {
    printf("hello world\n");
    int x = 1 / 0;
}
Run Code Online (Sandbox Code Playgroud)

输出./a.out是:

hello world
Floating point exception
Run Code Online (Sandbox Code Playgroud)

Python代码的输出是(在Linux中,python 2.7):

out: ""
err: ""
-8
Run Code Online (Sandbox Code Playgroud)

有没有办法获得可执行文件的输出,即使它崩溃了?

将返回码转换为字符串消息的通用方法也很不错.

python subprocess segmentation-fault

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

Java中的内存映射文件

我一直在尝试编写一些非常快速的Java代码,它必须执行大量的I/O. 我正在使用返回ByteBuffer的内存映射文件:

public static ByteBuffer byteBufferForFile(String fname){
    FileChannel vectorChannel;
    ByteBuffer vector;
    try {
        vectorChannel = new FileInputStream(fname).getChannel();
    } catch (FileNotFoundException e1) {
        e1.printStackTrace();
        return null;
    }
    try {
        vector = vectorChannel.map(MapMode.READ_ONLY,0,vectorChannel.size());
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
    return vector;
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是ByteBuffer .array()方法(应返回byte []数组)不适用于只读文件.我想编写我的代码,以便它可以与内存中构造的内存缓冲区和从磁盘读取的缓冲区一起使用.但是我不想把我的所有缓冲区都包装成ByteBuffer.wrap()函数,因为我担心这会减慢速度.所以我一直在编写所有内容的两个版本,一个采用byte [],另一个采用ByteBuffer.

我应该把一切都包好吗?或者我应该双重写一切?

java memory-mapping

8
推荐指数
2
解决办法
2万
查看次数

具有自定义渲染/绘图的Python GUI

我正在寻找一个Python GUI库,我可以重写渲染/绘图.

它必须支持基本小部件(按钮,组合框,列表框,文本编辑器,滚动),布局管理,事件处理

我正在寻找的是使用我的自定义Direct3D和OpenGL渲染器来进行所有GUI的绘制/渲染.

编辑S.Lott建议:我需要将这个GUI用于3D编辑器,因为我必须将很多东西从GUI元素拖放到3d渲染区域,我想使用一个使用Direct3D渲染的GUI系统(preffered)或OpenGL.它也必须有一个漂亮的外观.用WPF这样的GUI很难实现这一点,因为WPF没有句柄.它也需要绝对免费用于商业用途.

编辑:我还想使用我在我的应用程序中为3d部件初始化的渲染上下文

python opengl directx user-interface

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

我应该从Windows代码中删除TCHAR吗?

我正在修改一些非常古老的(10年)C代码.该代码在Unix/Mac上使用GCC进行编译,并使用MinGW对Windows进行交叉编译.目前整个都有TCHAR字符串.我想摆脱TCHAR并使用C++字符串代替.是否仍然需要使用Windows范围的功能,或者我现在可以使用Unicode和UTF-8完成所有操作吗?

c unicode winapi utf-8 tchar

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

生成15Khz音调的声音文件

我正在玩高音调的声音.我想生成一个1秒15Khz爆发的MP3文件.有没有一种简单的方法从C或Python做到这一点?我不想使用MATLAB.

c python audio mp3

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

创作手册页的最佳方式?

创作手册页的最佳方法是什么?我应该使用标准的man宏编写,还是现在有一些聪明的包可以使用某种XML-ified源并且可以输出手册页,HTML,ASCII,什么不是?

谢谢

manpage

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

需要:开源C/C++正则表达式库,用于执行unicode

我正在寻找一个良好的开源C/C++正则表达式库,它具有完整的Unicode支持.

我在库可能获得ASCII,UTF-8或UTF-16的环境中使用它.如果它获得UTF-16,它可能有也可能没有必要的引用字符(FF FE)或(FE FF).

我环顾四周,除了PCRE之外似乎没有其他选择.

我的第二个问题是我目前正在使用flex来构建一些巨大的正则表达式.理想情况下,我会有一个类似flex的词法表达式生成器,它也可以处理Unicode.

有什么建议?

c unicode pcre flex-lexer

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

数据包捕获:带有FIN标志的数据包是否也有数据?

我正在研究数据包捕获程序.IP数据包是否可以设置FIN标志但是还有数据?

ip tcp packet-capture tcp-ip

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

什么是pthread取消点用于?

在几个问题上讨论了pthread取消点(http://man7.org/linux/man-pages/man3/pthread_cancel.3.html).在某些情况下,受访者表示除非程序员知道他们做得很好,否则不应使用取消点.

我的问题---什么是pthread取消点用于?

[从评论更新]

  1. 取消点是否允许取消这些特定的API调用?
  2. 为什么那些而不是其他人?
  3. 有人想把它们用于其他任何事情吗?
  4. 它们是处理内核中的问题的黑客,还是必须与POSIX有关的内容?
  5. 您想在用户级代码中使用取消点还是仅在API中使用取消点?

c linux posix pthreads

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

Spark DataFrame类上的union()方法在哪里?

我正在使用Spark的JAVA连接器,并希望结合两个DataFrame,但奇怪的是DataFrame类只有unionAll?这是故意的,有没有办法结合两个DataFrames没有重复?

java dataframe apache-spark apache-spark-sql

7
推荐指数
1
解决办法
2万
查看次数