Почему метод Process.Start отрабатывает с ошибками?
Не могу понять, почему не отрабатывает метод Process.Start, выпрыгивает системная ошибка при его вызове.
в консоли вызываю пинг
comp@comp0:~$ ping -c 5 www.ya.ru
PING ya.ru (87.250.250.242) 56(84) bytes of data.
64 bytes from ya.ru (87.250.250.242): icmp_seq=1 ttl=55 time=4.43 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=2 ttl=55 time=4.30 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=3 ttl=55 time=4.32 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=4 ttl=55 time=4.19 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=5 ttl=55 time=4.20 ms
--- ya.ru ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 4.193/4.293/4.439/0.098 ms
Всё отрабатывает безупречно.
Делаю в коде:
using System;
using System.Text;
using System.Threading;
using System.Diagnostics;
using System.ComponentModel;
class TrimTram1
{
static void Main()
{
// ---
string tes = "ping -c 5 www.ya.ru";
Process.Start(tes);
// ---
}
}
Вот вывод:
comp@comp0:~/Qt_project/TCP_IP$ mono tehn4.exe
gio: file:///home/comp/Qt_project/TCP_IP/ping%20-c%205%20www.ya.ru: Ошибка при получении информации о файле «/home/comp/Qt_project/TCP_IP/ping -c 5 www.ya.ru»: Нет такого файла или каталога
Unhandled Exception:
System.ComponentModel.Win32Exception (0x80004005): Cannot find the specified file
at System.Diagnostics.Process.StartWithShellExecuteEx (System.Diagnostics.ProcessStartInfo startInfo) [0x00102] in <2703bbaa0a6e4686b6033c2dddb1a363>:0
at System.Diagnostics.Process.Start () [0x00032] in <2703bbaa0a6e4686b6033c2dddb1a363>:0
at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo startInfo) [0x0001b] in <2703bbaa0a6e4686b6033c2dddb1a363>:0
at System.Diagnostics.Process.Start (System.String fileName) [0x00006] in <2703bbaa0a6e4686b6033c2dddb1a363>:0
at TrimTram1.Main () [0x0006c] in <06daeafc853b4bc4970944168b738ba3>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.ComponentModel.Win32Exception (0x80004005): Cannot find the specified file
at System.Diagnostics.Process.StartWithShellExecuteEx (System.Diagnostics.ProcessStartInfo startInfo) [0x00102] in <2703bbaa0a6e4686b6033c2dddb1a363>:0
at System.Diagnostics.Process.Start () [0x00032] in <2703bbaa0a6e4686b6033c2dddb1a363>:0
at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo startInfo) [0x0001b] in <2703bbaa0a6e4686b6033c2dddb1a363>:0
at System.Diagnostics.Process.Start (System.String fileName) [0x00006] in <2703bbaa0a6e4686b6033c2dddb1a363>:0
at TrimTram1.Main () [0x0006c] in <06daeafc853b4bc4970944168b738ba3>:0
Суть ошибки совершенно не ясна
Можете хотя бы посоветовать, куда копать и есть ли книги по C# в Linux
Ответы (1 шт):
Автор решения: MSDN.WhiteKnight
→ Ссылка
Перегрузка Process.Start(string) запускает процесс по имени файла. Чтобы запустить команду с параметрами, нужно использовать другую перегрузку:
Process.Start("ping","-c 5 www.ya.ru");