c# using Process in Linux.传递参数的问题



我的程序应该启动一个Linux程序并向它传递参数。为了调试,我打印FileName和Arguments到控制台。

private static void StartRecording(string channelName)
{
Console.WriteLine($"Starting recording of the channel {channelName}");
if (RecordingProcesses.ContainsKey(channelName)) return;
Process recordingProcess = new Process
{
StartInfo = new ProcessStartInfo
{
UseShellExecute = false, 
FileName = RecorderPath,
Arguments = $"--appId {AppId} --channel {channelName} --uid {RecordingUid} --channelProfile 0 " +
$"--appliteDir {AppliteDir} --channelKey {GetToken(channelName)}",
}
};
recordingProcess.Exited += delegate { OnProcessExited(channelName); };
Console.WriteLine($"Starting process. FileName = {recordingProcess.StartInfo.FileName}, Arguments = {recordingProcess.StartInfo.Arguments}");
recordingProcess.Start();
RecordingProcesses.Add(channelName, recordingProcess);
}

程序抛出一个错误,说我使用了错误的参数。之后,我关闭程序并尝试通过终端手动启动该进程,方法是将调试消息中的FileName和Arguments复制粘贴到终端,然后程序运行正常。为什么会这样呢?我怎样才能从我的程序中启动该进程,并获得与从终端启动时相同的结果?

我找到原因了。这是因为其中一个论点包含波浪。当从终端运行程序时,它被替换为"/root"当我使用Process时,它并没有取代波浪。

最新更新