小编Nat*_*ons的帖子

动态内存分配失败恢复

我正在研究嵌入式处理器(400 MHz Intel PXA255 XScale),我想我看到一个没有足够内存来满足"新"操作的情况.该程序没有崩溃,所以我假设其他线程已经释放了他们的记忆,这只是一个短暂的事情.这是一些非常关键的代码,因此退出不是一个选项,需要将某种错误返回给远程用户.

以下小修补程序是否足以解决问题,还是有更好的方法?在用以下代码替换每个'new'之前,我想我会问.

char someArr[];
do{ 
    someArr = new char[10]; 
    Sleep(100); // no justification for choosing 100 ms
} while ( someArr == NULL );
Run Code Online (Sandbox Code Playgroud)

睡眠有帮助吗?我应该设置一些最大重试次数吗?是否可以在任何地方使用静态初始化?

最后更新:非常感谢您提供有用的响应,但事实证明在代码检查中存在错误的内存分配错误.我会记住所有这些答案,尽可能多地替换malloc和new(特别是在错误处理代码中).

c++ embedded viper new-operator windows-ce

6
推荐指数
2
解决办法
3315
查看次数

是否必须在RXTX中进行常规轮询?

在试图弄清楚这个问题时(任何帮助都很受欢迎),我在使用PortMon监视其活动的同时运行RXTX 并注意到RXTX不断检查数据是否可用,即使Java客户端仅从gnu.io.SerialPort对象读取通过SerialPortEventListener.

为什么是这样?这是RXTX人员的糟糕实现选择,Sun的API选择不好(因为RXTX遵循javax.comm API),还是本机代码支持运行Java的限制?

另一方面,超级终端不进行轮询(并且没有问题).它是否可以访问一些隐藏的Windows系统调用,让它执行此操作?

java windows serial-port rxtx

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

是什么让Google Maps/Youtube能够显示"完成此操作"菜单?

如果可能的话,我如何才能为"我的"应用程序获取此行为?

例如,当用户导航到URL"example.com/*"(以example.com开头的任何页面)时,我想要它,以便"完成此操作"菜单显示列出所有浏览器,这特别的应用?

我已经完成了对Intent文档的一些阅读,但似乎你只能为手机数据而不是网址创建它们.

编辑:有人吗?我已经对此进行了一些调查,但没有运气.我想设置赏金,但我还没有这个选择.如果不可能,我想我只想粘贴一个URL.

android

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

OpenCV和python/virtualenv?

我正在使用OpenCV(2.3.1)以及其他库中的python项目.到目前为止,我只是apt-get安装了所有内容,但现在我想与可能尚未安装所有内容的人共享我的代码.所以,virtualenv似乎是完美的解决方案,但我明白了.

$ python src/importcv.py # does nothing but import cv, no problems
$ virtualenv .           # create virtualenv here
$ source bin/activate    # activates this virtualenv
(p)$ python src/importcv.py
Traceback (most recent call last):
  File "src/test.py", line 1, in <module>
    import cv
ImportError: No module named cv
Run Code Online (Sandbox Code Playgroud)

我如何设置virtualenv有什么不对,还是我必须做一些其他步骤,以便它可以看到我的opencv python绑定?

python linux opencv virtualenv

6
推荐指数
3
解决办法
7423
查看次数

测试实时操作系统的硬度

我有一个嵌入式设备(Technologic TS-7800),宣传实时功能,但没有说"硬"或"软".当我等待制造商的回复时,我认为自己测试系统不会有什么坏处.

在实时/确定性行为(延迟和抖动)方面,有哪些既定程序可以确定特定设备的"硬度"?

在大学期间,我可以使用一些非常整洁的硬件(良好的示波器和信号发生器),所以我认为我不会在测试设备,只是专业知识方面遇到任何问题.

embedded real-time hard-real-time

5
推荐指数
3
解决办法
1401
查看次数

sysopen权限被拒绝

我正在尝试修复git-svn中的间歇性错误.问题出现在Windows XP中,包括Cygwin git(perl v5.10.1)和msysGit(perl v5.8.8).

对于涉及获取的任何操作,我能够中途进行操作,然后操作就会消失,类似于

无法打开.git/svn/refs/remotes/trunk/.rev_map.cc05479a-e8ea-436f-8d71-e07493b7796c.lock:设备或资源繁忙

在/ usr/lib/git-core/git-svn第5240行

但是,确切的锁定文件和行号并不总是相同.我已将实际问题跟踪到3679行

sysopen(my $fh, $db_lock, O_RDWR | O_CREAT)
Run Code Online (Sandbox Code Playgroud)

这是创建一个新的.lock文件,我试过相当于无效.

open(my $fh, ">", $db_lock)
Run Code Online (Sandbox Code Playgroud)

我检查了目录的权限,它是drwxr-xr-x,所以不应该有任何问题,或者如果它们是,它们就不会那么不一致.

这可能是因为脚本正在快速连续多次创建和重命名这个文件,XP无法处理它?编辑:我怀疑是这种情况,因为当我使用perl调试器并手动启动每个sysopen的执行时,我提取的100个修订版本没有问题.

编辑:一些Git开发人员更愿意找出根本原因,而不是发生工作的黑客(我认为正确的方法).那么,任何人都可以帮我找到否认我允许打开这些.lock文件的罪魁祸首吗?我有许多理论上可以用于此目的的工具,但它们并不完全是这样的:

  • Process Explorer - 显示进程拥有的所有句柄,还可以搜索拥有给定句柄的所有进程.但是,它不适用于短期进程或句柄(这是git svn clone/fetch所做的)
  • 解锁器 - 检测通用的"权限被拒绝"对话框何时出现,并找到有问题的句柄和提议来处理它们.但是,当非资源管理器程序遇到基于文件的错误时,它不会出现

简而言之,有没有什么方法可以在不成为微软员工的情况下获得更多信息?

编辑2:它可能不是赛门铁克,而是我们在联网计算机上运行的另一个程序.我有一些人在研究它,他们应该能够至少缩小原因.

windows git perl git-svn timing

5
推荐指数
2
解决办法
1056
查看次数

从SL4A脚本启动Android应用程序?

我在/sdcard/sl4a/scripts/twitter.py中有以下内容

import android
droid = android.Android()
droid.launch('com.twitter.android')
Run Code Online (Sandbox Code Playgroud)

如果我在控制台或后台运行它,它会立即退出代码1,日志文件为空.

如果还有其他方法可以从某种脚本启动应用程序,我愿意接受建议.我知道Tasker,但我宁愿编写文本脚本而不是使用向导.

python android sl4a

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

在Java中没有旋转的块?

Java中的某些方法会阻塞,直到它们可以执行某些操作,比如ServerSocket.accept()和InputStream.read(),但是它如何做到这一点对我来说并不容易找到.我能想到的最接近的事情是每次循环使用Thread.sleep()的while()循环,但是睡眠时间越长,阻塞响应越少,睡眠越短,发生的旋转越多.

我有两个问题:

  1. 各种标准功能(如上所述)如何阻止?原生代码?while()循环?别的什么?

  2. 我该如何实现阻止的方法?

java multithreading

4
推荐指数
2
解决办法
4927
查看次数

在分支中跟踪某人的 GitHub 存储库

我对 Git 还很陌生,到目前为止非常喜欢它,但不确定在这里做什么。

我已经分叉了一个 github 项目,目前正在将其移植到另一种语言。作为参考,我创建了一个代码分支,就像我创建分支时一样。我现在的问题是原来的项目已经更新了,我不知道如何将这些更改从原来的 master 拉到我的分支中(因为“origin”指向我的 github 项目)。

关于我自己的教育的后续问题,原始项目的所有者必须运行什么命令才能将更改从我的分支拉到他的主分支中?

编辑:当我从自己的“主”分支运行它们时,这些答案有效,但当我从“跟踪”分支运行它们时则不起作用(我在这里松散地使用该术语,因为我知道同名的 git 命令。但不确定它的作用)。

当我在非主分支中运行时git fetch upstream,什么也没有发生。当我尝试时git fetch upstream:master,它说

ssh: upstream: no address associated with name
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

git branch tracking pull github

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

使用命名管道连接到LibreOffice

我可以使用套接字进行连接,但是我听说在所有内容都是本地的情况下使用管道的速度更快,因此我想尝试一下,但无法建立连接。

我从Libre开始

 > soffice --headless --invisible --norestore --nodefault --nolockcheck --nofirstwizard --accept='pipe,name=ooo_pipe;urp;'
Run Code Online (Sandbox Code Playgroud)

而应该工作但不起作用的最低限度的最小python脚本是

import uno
from com.sun.star.connection import NoConnectException

pipe = 'ooo_pipe'
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext)
context = resolver.resolve("uno:pipe,name=%s;urp;StarOffice.ComponentContext" % pipe)
Run Code Online (Sandbox Code Playgroud)

python openoffice.org named-pipes uno libreoffice

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