我有一组.EXE命令.如何将所有在Perl中运行的命令作为单个文件?什么是在Perl中调用.EXE文件的过程?
主程序是这样的:
PREPARE PARAMETERS FOR CHILD PROCESSES
subprocess.Popen('python child.py param=example1'.split(' '))
subprocess.Popen('python child.py param=example2'.split(' '))
...
Run Code Online (Sandbox Code Playgroud)
如何使主程序监视它启动的子进程的每个实例,如果它没有运行,则使用相应的参数重新启动它.
保持多个子进程实例运行而不是在主进程中实现多线程架构的目的是尽可能多地利用CPU和数据库吞吐量.
我有一个将在Windows 7(使用Swing,App#1)上运行的java应用程序,它以全屏模式运行(但不是独占模式).我有另一个应用程序(App#2),它显示一个GUI,通过串口配置外部设备,我没有源,也根本无法更改.
我想在App#1中嵌入App#2,使它看起来像是父java应用程序的一部分(隐藏文件 - >退出按钮并隐藏最小化,最大化和关闭按钮).
如果在Java应用程序中无法进行这种集成,那么我可以使用Java打开进程并监视它以保持打开状态.它需要将窗口设置为"始终在顶部",因为App#1是全屏的并且尽可能多地隐藏外部MS Windows UI以诱使用户认为它不是外部应用程序.是否有某种方法是否使用JNI或其他东西来管理我的Java应用程序内部的另一个进程窗口(屏幕位置,标题栏,最小化,最大化,关闭按钮可见性)和进程状态?
如果需要,我很乐意提供更多信息.
我在c ++中有这个程序:
#include <iostream>
using namespace std;
int main()
{
char buf[50];
cin.getline(buf,49);
system(buf);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行并编译它并键入例如"helo"时,我的程序会输出错误:
"helo" not found.
Run Code Online (Sandbox Code Playgroud)
我可以阻止显示此错误吗?有没有办法从系统命令中禁用错误?
用一段Java代码调用程序的最简单方法是什么?(我想运行的程序是aiSee,它可以从命令行或Windows GUI运行;我在Vista上,但代码也将在Linux系统上运行).
我有一个从C#类库运行的命令行可执行文件.在一些非常罕见的情况下,由于传递给它的命令行数据,可执行文件将挂起.不幸的是,这导致调用c#DLL的应用程序挂起,同时它无限期地等待进程退出.
如果命令行exe在1秒内没有完成执行,它永远不会退出.我想做的是在进程启动后立即生成一个计时器,并在几秒钟内没有退出时强制关闭进程.
这里最好的方法是什么?解决方案需要对性能产生最小的影响,因为此命令行进程是高度重复性任务的瓶颈.
编辑:为什么我应该使用System.Timer而不是Threading.Timer,反之亦然?
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = true;
startInfo.WorkingDirectory = workingDirectory;
startInfo.FileName = commandLineExe;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = strArguments;
// Call WaitForExit and then the using statement will close.
using (Process exeProcess = Process.Start(startInfo))
{
exeProcess.WaitForExit();
}
Run Code Online (Sandbox Code Playgroud)
请不要提出我应该尝试的建议,找出命令行应用程序挂起的原因,或者我应该将命令行功能重构为源代码.我们正在积极解决这个问题,但应用程序的稳定性需要先行.
我正试图从我的java swing应用程序启动一个外部程序:
Process proc = Runtime.getRuntime().exec(cmd);
Run Code Online (Sandbox Code Playgroud)
但是外部程序实际上从未实际启动,直到我每次都关闭我的java应用程序.它只在我关闭后等待启动.
我试图运行的外部程序是一个带参数的exe:
cmd = "externalProgram.exe -v --fullscreen --nowing";
Run Code Online (Sandbox Code Playgroud)
这可能是错的.有趣的是,如果我尝试一些简单的事情,它会按预期工作:
Process proc = Runtime.getRuntime().exec("notepad.exe");
Run Code Online (Sandbox Code Playgroud) 我需要在 VB.NET MDI 窗体中打开一些外部应用程序,例如 notepad.exe,并且我还需要确保始终只有一个副本在运行。
我使用了下面的代码,但它什么也没做。它给出了错误 SetParent 未声明且 findWindow 未声明
Dim myProcess As Process = New Process()
Dim MyHandle As IntPtr
myProcess.StartInfo.FileName = "Notepad.exe"
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
myProcess.Start()
MyHandle = FindWindow(vbNullString, "C:\Windows\Notepad.exe")
SetParent(MyHandle, Me.Handle)
myProcess.WaitForExit()
Run Code Online (Sandbox Code Playgroud)
这是我用来验证只有一个实例正在运行的代码
If (System.Diagnostics.Process.GetProcesses.Equals("notepad.exe")) Then
MsgBox("Only One Instance!")
Else
Dim p As New System.Diagnostics.Process
p.StartInfo.FileName = "notepad.exe"
p.Start()
End If
Run Code Online (Sandbox Code Playgroud)
此代码正在打开 notepad.exe,但不检查以前的实例。所以每次我点击按钮它都会打开一个新的记事本
我试图在我的python脚本中获取外部程序的内存使用情况.我尝试使用脚本http://code.activestate.com/recipes/286222/,如下所示:
m0 = memory()
subprocess.call('My program')
m1 = memory(m0)
print m1
Run Code Online (Sandbox Code Playgroud)
但这似乎只是给了我python脚本的内存使用而不是'我的程序'.有没有办法输出程序的内存使用情况以便在python脚本中使用?
我需要从传递给Perl脚本的路径获取目录名作为运行时参数.这是我正在使用的代码:
$command ="cd $ARGV[0]";
system($command);
$command="dir /ad /b";
system($command);
@files=`$command`;
Run Code Online (Sandbox Code Playgroud)
但它仍然返回我正在运行此Perl脚本的目录中的目录名称.简而言之,如何从路径传递给此Perl脚本的目标目录中获取目录名称?
我有一个应用程序可执行文件,它使用不同的参数运行以产生不同的输出。我想从脚本的命令行参数中为此提供一些参数,而其他参数则是脚本的本地参数。用法:
./dump-output.pl <version> <folder-name> <output-file>
my $version = $ARGV[0];
my $foldername = $ARGV[1];
my $outputfile = $ARGV[2];
my $mkdir_cmd = "mkdir -p ~/$foldername";
# There are 6 types of outputs, which can be created:
# 'a', 'b', 'c', 'd', 'e' or 'f'
my @outputtype = ('a', 'b', 'c', 'd', 'e', 'f');
my $mkdir_out = `$mkdir_cmd`;
for( $itr=0; itr<=5; itr++ ) {
$my_cmd = "./my_app -v $version -t $outputtype[itr] -f $outputfile > ~/$foldername/$outputtype.out"
$my_out = `$my_cmd`;
}
Run Code Online (Sandbox Code Playgroud)
我对上面的代码做了一些固有的错误,但一直无法弄清楚:-(