我正在编写一个应用程序来启动和监视C#中的其他应用程序.我正在使用System.Diagnostics.Process类来启动应用程序,然后使用Process.Responding属性监视应用程序,以每100毫秒轮询一次应用程序的状态.我使用Process.CloseMainWindow来停止应用程序或Process.Kill如果它没有响应就杀死它.
我注意到一种奇怪的行为,有时进程对象进入一种状态,即当底层进程在循环中挂起并且它不响应CloseMainWindow时,响应属性总是返回true.
重现它的一种方法是在启动流程实例后立即轮询Responding属性.所以举个例子
_process.Start();
bool responding = _process.Responding;
Run Code Online (Sandbox Code Playgroud)
将重现错误状态
_process.Start();
Thread.Sleep(1000);
bool responding = _process.Responding;
Run Code Online (Sandbox Code Playgroud)
将工作.将睡眠周期减少到500将再次引入错误状态.
启动后调用_process.Responding太快的东西似乎阻止了对象获取正确的Windows消息队列处理程序.我想我需要等待_process.Start完成它的异步工作.有没有比调用Thread.Sleep更好的方法来等待这个?我不太自信1000毫秒总是足够的.
在Linux上创建网站截图的好命令行工具是什么?我需要在没有人工交互的情况下自动生成网站的屏幕截图.我找到的唯一工具是khtml2png,但我想知道是否有其他不基于khtml(即有良好的JavaScript支持,......).
我知道这不是一个直接的编程问题,但stackoverflow上的人似乎能够回答任何问题.
我有一台运行Centos 5.2 64位的服务器.相当强大的双核2服务器,4GB内存.它主要提供静态文件,flash和图片.当我使用lighttpd时,它可以轻松地提供超过80 MB /秒的速度,但是当我使用nginx进行测试时,它会降低到低于20 MB /秒.
我的设置很简单,使用默认的安装文件,我添加了以下内容
user lighttpd;
worker_processes 8;
worker_rlimit_nofile 206011;
#worker_rlimit_nofile 110240;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 4096;
}
http {
....
keepalive_timeout 2;
....
}
Run Code Online (Sandbox Code Playgroud)
我认为nginx至少应该是那么强大,所以我一定不会做某事.
是否有更简单的方法来单步执行代码,而不是通过Windows服务控制管理器启动服务,然后将调试器附加到线程?这有点麻烦,我想知道是否有一个更简单的方法.
如何使用T-SQL告诉SQL Server数据库是否将TRUSTWORTHY属性设置为on或off
我需要找出哪些端口附加到Unix机器上的哪些进程(HP Itanium).不幸的是,lsof没有安装,我无法安装它.
有没有人知道另一种方法?一个相当漫长的谷歌搜索会议没有发现任何东西.
具体来说,我有一个PHP命令行脚本,在某一点上需要用户输入.我希望能够执行外部编辑器(例如vi),并等待编辑器在恢复脚本之前完成执行.
我的基本想法是使用临时文件进行编辑,然后检索文件的内容.有点像:
$filename = '/tmp/script_' . time() . '.tmp';
get_user_input ($filename);
$input = file_get_contents ($filename);
unlink ($filename);
Run Code Online (Sandbox Code Playgroud)
我怀疑这是不可能从PHP命令行脚本,但我希望有一些shell脚本技巧可用于实现相同的效果.
关于如何在其他脚本语言中实现这一点的建议也非常受欢迎.
我在SQL 2005中有一个存储过程.存储过程实际上是在SP的开头创建临时表并在最后删除它.我现在在VS 2005中调试SP.在SP之间,我想知道临时表中的内容.任何人都可以在运行时帮助查看临时表的内容.
谢谢Vinod T.
我们有一个使用OpenGL的3D查看器,但我们的客户有时会抱怨它"不工作".我们怀疑大多数这些问题源于他们试图在businiss笔记本电脑上使用,实际上是现代3D实时游戏.
我们如何在我们使用的windows msi安装程序中检查对openGL的支持?
作为旁注,如果你能回答"OpenGL支持的图形卡列表?",那也很有意思.奇怪,谷歌在这里没有帮助..
有没有办法在C编译时知道并输出函数所需的堆栈大小?这是我想知道的:
我们来看一些功能:
void foo(int a) {
char c[5];
char * s;
//do something
return;
}
Run Code Online (Sandbox Code Playgroud)
在编译这个函数时,我想知道它被调用时会消耗多少堆栈空间.这可能对检测隐藏大缓冲区的结构的堆栈声明很有用.
我正在寻找能打印出类似内容的东西:
file foo.c:function foo stack usage是nbytes
有没有办法不看生成的程序集知道?或者可以为编译器设置限制?
更新:我不是试图避免给定进程的运行时堆栈溢出,我正在寻找一种在运行时之前查找的方法,如果编译器确定的函数堆栈使用可用作编译过程的输出.
让我们换一种说法:是否可以知道函数本地所有对象的大小?我猜编译器优化不会成为我的朋友,因为某些变量会消失但是上限很好.
c# ×2
sql-server ×2
.net ×1
asynchronous ×1
c ×1
callstack ×1
command-line ×1
debugging ×1
hp-ux ×1
lighttpd ×1
linux ×1
nginx ×1
opengl ×1
php ×1
screenshot ×1
shell ×1
sql ×1
user-input ×1
windows ×1