我目前有一个从终端运行的c#应用程序。它打开一个新终端来执行某个命令,然后关闭该终端。我想知道我是否可以在当前打开的终端中执行此命令,而不是打开一个新命令。我执行命令的代码如下。
Process proc = new System.Diagnostics.Process();
proc.StartInfo.WorkingDirectory = @"MyDirectory";
proc.StartInfo.FileName = @"/usr/bash";
proc.StartInfo.Arguments = command;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
如果不打开新终端,我该怎么重写呢?
答案 0 :(得分:1)
据我所知,没有 - 但你可以使用代码
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
使其不会弹出窗口。然后在普通终端中,您可以使用print通过“Running Script ...”等消息更新用户
答案 1 :(得分:0)
您可以直接使用libc系统与Diagnostics.Process和重定向管道(仅包装libc函数):
using System;
using System.Runtime.InteropServices;
namespace ShellMe
{
class MainClass
{
[DllImport ("libc")]
private static extern int system (string exec);
public static void Main (string[] args)
{
system("YourCommand2Run"); // blocking, you are in a shell so same rules apply
system("YourCommand2Run &"); // non-blocking
}
}
}