这与Windows XP进程有关.
我有一个进程正在运行,我们称之为Process1.Process1创建一个新进程Process2,并保存其id.
现在,在某些时候Process1希望Process2做某事,所以它首先需要确保Process2仍然存在并且用户还没有杀死它.
如何检查此进程是否仍在运行?自从我创建它以来,我有进程ID,我认为有一些库函数沿着IsProcessIDValid(id)但我在MSDN上找不到它
我想请求帮助从c#app打开一个带有相关应用程序的文件.我试过这个:
ProcessStartInfo pi = new ProcessStartInfo(file);
pi.Arguments = Path.GetFileName(file);
pi.UseShellExecute = true;
pi.WorkingDirectory = Path.GetDirectoryName(file);
pi.FileName = file;
pi.Verb = "OPEN";
Process.Start(pi);
Run Code Online (Sandbox Code Playgroud)
或这个:
Process.Start(file);
Run Code Online (Sandbox Code Playgroud)
其中file两个示例中的字符串表示尝试打开的文件的完整路径.现在,除了使用ACDSee应用程序的(jpg)图像外,一切运行良好.Irfanview协会运作良好,MS办公室文件也是如此.试图打开使用ACDSee相关联的JPG图片后,它只是运行在通知区域中的ACDSEE,不打开该文件.
我发现,在注册表CLASSES_ROOT中为*.jpg图像,有一个ACDSee.JPG值作为关联应用程序,并且在此键下有一个shell- > Open-> Command命令路径:
"C:\Program Files\ACD Systems\ACDSee\ACDSee.exe" /dde
Run Code Online (Sandbox Code Playgroud)
我觉得这个奇怪/dde的原因,为什么我无法打开文件.我意识到在同一个reg key shell-> Open中有一些DDEExec带有值的键入口[open("%1")]
对于Irfan视图或其他已检查的应用程序,没有ddeexec,只有正常的命令
"C:\Program Files (x86)\IrfanView\i_view32.exe" "%1"
Run Code Online (Sandbox Code Playgroud)
可以在交换%1替换文件名后从命令行运行,但我无法从命令行中的acdsee条目运行命令:(
所以我的问题是,我如何设置ProcessStartInfo对象以确保它将运行所有文件,就像它在资源管理器中通过doubleclick,标准和这些DDEExec?还有其他类似的东西DDEExec我应该知道吗?谢谢,对不起我的EN
我有一个... bash shell脚本的奇怪问题,我希望得到一些见解.
我的团队正在编写一个脚本,该脚本遍历文件中的行并检查每个行中的内容.我们有一个错误,当通过将不同脚本排序在一起的自动化过程运行时,最后一行没有被看到.
使用的代码遍历文件中的行(名称存储在DATAFILE被
cat "$DATAFILE" | while read line
Run Code Online (Sandbox Code Playgroud)
我们可以从命令行运行脚本,它会看到文件中的每一行,包括最后一行,就好了.但是,当由自动化进程(运行在相关脚本之前生成DATAFILE的脚本)运行时,永远不会看到最后一行.
我们更新了代码以使用以下代码迭代这些行,并清除了问题:
for line in `cat "$DATAFILE"`
Run Code Online (Sandbox Code Playgroud)
注意:DATAFILE没有在文件末尾写入换行符.
我的问题是两部分......为什么最后一行不会被原始代码看到,为什么这会改变有所作为呢?
我只想到我能想出为什么最后一行不会被看到:
话虽这么说,似乎,如果你在shell脚本中有2个命令,那么第一个应该在脚本运行第二个时完全关闭.
对问题的任何见解,尤其是第一个,都将非常感激.
所以我有一个进程在运行,需要几个小时才能完成.我希望自动完成另一个过程.请注意,我无法在第一个脚本中添加对第二个脚本的调用,也不会创建另一个顺序运行它们的脚本.在Linux中有什么办法吗?
编辑:一个选项是x使用pgrep 每分钟轮询并检查过程是否完成.如果是,请启动另一个.但是,我不喜欢这个解决方案.
PS:两者都是bash脚本,如果有帮助的话.
我正在尝试获取example.exe的进程句柄,所以我可以调用TerminateProcess它.我怎样才能做到这一点?请注意,它没有窗口,因此FindWindow无法工作.
我想出了如何启动一个过程.但我现在的问题是控制台窗口(在这种情况下是7z)弹出最前面阻挡我的视线并移除我的焦点打断我的句子或每隔几秒钟做一次.它非常烦人,我如何防止这种情况发生.我认为CreateNoWindow解决了这个问题,但它没有.
注意:有时控制台需要用户输入(替换文件或不替换).所以完全隐藏它可能是个问题.
这是我目前的代码.
void doSomething(...)
{
myProcess.StartInfo.FileName = ...;
myProcess.StartInfo.Arguments = ...;
myProcess.StartInfo.CreateNoWindow = true;
myProcess.Start();
myProcess.WaitForExit();
}
Run Code Online (Sandbox Code Playgroud) 您好我正在尝试执行以下操作:我有一个过程,可以采取参数(数字)并返回这些数字的总和
Process P = Process.Start(sPhysicalFilePath, Param);
int result = P.ExitCode;
Run Code Online (Sandbox Code Playgroud)
我从"ExitCode"获得返回值的问题是:程序有时在进程之前完成他的工作,所以当程序到达这一行时
int result = P.ExitCode;
Run Code Online (Sandbox Code Playgroud)
我有一个例外..我的问题是如何等待这个过程,直到它完成它的工作抱歉我忘记说我正在使用C#语言
如何将多个命令的stdout传递给单个命令?
示例1:组合并排序所有三个echo命令的输出:
echo zzz; echo aaa; echo kkk
Run Code Online (Sandbox Code Playgroud)
期望的输出:
aaa
kkk
zzz
Run Code Online (Sandbox Code Playgroud)
示例2:重写以下内容,以便所有命令都使用管道在单个命令行中,而不重定向到临时文件:
setopt > /tmp/foo; unsetopt >> /tmp/foo; set >> /tmp/foo; sort /tmp/foo
Run Code Online (Sandbox Code Playgroud)