在XP中检测应用程序崩溃的最佳方法是什么(每次生成相同的"错误"窗口对 - 每个窗口都有相同的窗口标题)然后重新启动它?
我特别感兴趣的是听到使用最少系统资源的解决方案,因为有问题的系统很老.
我曾想过使用像AutoIt这样的脚本语言(http://www.autoitscript.com/autoit3/),并且可能每隔几分钟触发一次'探测器'脚本?
在Python,Perl,PowerShell或其他方面完全可以做得更好吗?
任何想法,提示或想法非常感谢.
编辑:它实际上并没有崩溃(即退出/终止 - 感谢@tialaramex).它显示一个等待用户输入的对话框,然后是另一个等待进一步用户输入的对话框,然后它实际退出.这是我想要检测和处理的对话框.
我希望建立一个已经使用umbraco作为其内容管理系统的并行站点.新站点将共享管理员,模板,宏和媒体资源,但不会共享任何内容.如果我使用umbraco安装设置指向同一目录的多个主机头,如何根据访问的URL切换站点的顶级节点(home vs home2)?
任何人都知道任何好的MSBuild任务将执行PowerShell脚本并传递不同的参数?
我能够找到B#.NET博客:从MSBuild调用PowerShell脚本,但我希望有一些更精致的东西.
如果我找不到任何东西,我当然会继续使用该博客作为首发来磨练自己.
在Perl脚本的中间,有一个我想要执行的系统命令.我有一个字符串,其中包含需要输入stdin的数据(该命令只接受来自stdin的输入),我需要捕获写入stdout的输出.我已经看过在Perl中执行系统命令的各种方法,而且open函数似乎是我需要的,除了它看起来我只能捕获stdin或stdout,而不是两者.
目前,似乎我最好的解决方案是使用open,将stdout重定向到临时文件,并在命令完成后从文件中读取.有更好的解决方案吗?
例如,它是更安全的使用mod_php,而不是php-cgi?或者使用它mod_perl而不是传统更安全cgi-scripts?
我主要对安全问题感兴趣,但如果存在显着差异,速度可能会成为一个问题.
以下代码片段(正确)在C中发出警告,在C++中发出错误(分别使用gcc和g ++,使用版本3.4.5和4.2.1进行测试; MSVC似乎并不关心):
char **a;
const char** b = a;
Run Code Online (Sandbox Code Playgroud)
我能理解并接受这个.
这个问题的C++解决方案是将b更改为const char*const*,它不允许重新分配指针并阻止你绕过const-correctness(C++ FAQ).
char **a;
const char* const* b = a;
Run Code Online (Sandbox Code Playgroud)
但是,在纯C中,更正后的版本(使用const char*const*)仍会发出警告,我不明白为什么.有没有办法绕过这个而不使用演员?
澄清:
1)为什么这会在C中产生警告?它应该完全是const安全的,并且C++编译器似乎认识到它.
2)在说(并让编译器强制执行)我不会修改它指向的字符时,接受这个char**作为参数的正确方法是什么?例如,如果我想写一个函数:
void f(const char* const* in) {
// Only reads the data from in, does not write to it
}
Run Code Online (Sandbox Code Playgroud)
我想在char**上调用它,参数的正确类型是什么?
编辑:感谢那些做出回应的人,特别是那些提出问题和/或跟进我的回复的人.
我已经接受了这样一个答案,即如果没有演员阵容,我想做的事情是无法完成的,无论是否应该这样做.
Apple的CoreGraphics库定义了两个用于描述弧的函数.
详细信息在CGPath API参考中进行了解释.为什么两个功能?简单方便吗?一个比另一个更有效吗?一个是用另一个定义的吗?
好的,让我们更一般地重新解释这个问题.
使用反射,有没有办法在运行时动态调用您可能重写的基类方法.您不能在编译时使用'base'关键字,因为您无法确定它是否存在.在运行时,我想列出我的祖先方法并调用祖先方法.
我尝试使用GetMethods()等,但他们返回的只是指向该方法派生程序最多的"指针".不是基类的实现.
我们正在使用相对较大的类层次结构在C#3.0中开发一个系统.这些类中的一些类(在层次结构中的任何位置)具有需要处理的资源,这些类实现IDisposable接口.
现在,为了便于维护和重构代码,我想找到一种方法,对于实现IDisposable的类,"自动"调用base.Dispose(bDisposing),如果任何祖先也实现了IDisposable.这样,如果层次结构中较高级别的某个类开始实现或停止实现将自动处理的IDisposable.
这个问题有两个方面.
第一部分,找到实现IDisposable的祖先,我已经能够处理.
第二部分是棘手的.尽管我付出了很多努力,但我还是无法从派生类调用base.Dispose(bDisposing).我所有的尝试都失败了 它们要么导致编译错误,要么调用错误的Dispose()方法,这是最导出的方法,因此永远循环.
主要问题是,如果没有实现它的祖先这样的东西,你实际上不能直接在你的代码中引用base.Dispose()(请注意,可能没有祖先实现IDisposable,但我希望派生代码准备就绪,如果将来发生这样的事情).这给我们留下了反思机制,但我找不到合适的方法.我们的代码充满了先进的反射技术,我想我没有错过任何明显的东西.
我最好的拍摄是在评论代码中使用一些条件代码.更改IDisposable层次结构将破坏构建(如果不存在IDisposable祖先)或抛出异常(如果存在IDisposable祖先但未调用base.Dispose).
这是我发布的一些代码,向您展示我的Dispose(bDisposing)方法的样子.我将此代码放在整个层次结构中所有Dispose()方法的末尾.任何新类都是从包含此代码的模板创建的.
public class MyOtherClassBase
{
// ...
}
public class MyDerivedClass : MyOtherClassBase, ICalibrable
{
private bool m_bDisposed = false;
~MyDerivedClass()
{
Dispose(false);
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool bDisposing)
{
if (!m_bDisposed) {
if (bDisposing) {
// Dispose managed resources
}
// …Run Code Online (Sandbox Code Playgroud) 我正在开发一个嵌入式Linux项目,它将ARM9连接到硬件视频编码器芯片,并将视频写入SD卡或USB记忆棒.软件体系结构涉及将数据读入缓冲池的内核驱动程序,以及将数据写入已安装的可移动设备上的文件的用户空间应用程序.
我发现超过一定的数据速率(大约750kbyte/sec),我开始看到用户视频写入应用程序停止大约半秒钟,大约每5秒钟.这足以导致内核驱动程序用完缓冲区 - 即使我可以增加缓冲区的数量,视频数据也必须与实时进行的其他事情同步(理想情况下在40ms内).在这5秒的"滞后峰值"之间,写入在40ms内完成(就应用程序而言 - 我很欣赏它们被OS缓冲)
我认为这种滞后峰值与Linux将数据刷新到磁盘的方式有关 - 我注意到pdflush旨在每5秒唤醒一次,我的理解是这将是写作的内容.一旦停止结束,用户态应用程序就能够快速服务并写入积压的缓冲区(没有溢出).
我认为我写的设备具有合理的最终吞吐量:从内存fs复制15MB文件并等待同步完成(并且usb棒的灯停止闪烁)给了我大约2.7MBytes/sec的写入速度.
我正在寻找两种线索:
如何阻止突发性写入停止我的应用程序 - 可能是进程优先级,实时补丁,或调整文件系统代码以连续写入而不是匆忙写入?
如何让我的应用程序了解文件系统在写入积压和卡/棒的吞吐量方面发生了什么?我能够动态地改变硬件编解码器中的视频比特率,这比丢帧更好,或者在最大允许比特率上强加一个人工上限.
更多信息:这是一个200MHz ARM9,目前运行基于Montavista 2.6.10的内核.
更新:
我希望这是有道理的.stackoverflow上的第一个嵌入式Linux问题?:)
c ×3
perl ×2
apache ×1
c# ×1
const ×1
crash ×1
drawing ×1
embedded ×1
filesystems ×1
hostheaders ×1
idisposable ×1
ipc ×1
linux ×1
macos ×1
mod-perl ×1
mod-php ×1
msbuild ×1
php ×1
pointers ×1
powershell ×1
pthreads ×1
real-time ×1
reflection ×1
sites ×1
umbraco ×1
video ×1
windows-xp ×1