在当前终端执行命令,无需打开新终端。

时间:2015-08-11 17:39:26

标签: c# linux process terminal mono

我目前有一个从终端运行的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();

如果不打开新终端,我该怎么重写呢?

2 个答案:

答案 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
        }
    }
}