Saya ingin menjalankan program baris perintah eksternal dari aplikasi Mono / .NET saya. Sebagai contoh, saya ingin menjalankan mencoder . Apa itu mungkin:
- Untuk mendapatkan keluaran shell baris perintah, dan menulisnya di kotak teks saya?
- Untuk mendapatkan nilai numerik untuk menampilkan bilah kemajuan dengan waktu yang berlalu?
c#
.net
mono
process.start
Stighy
sumber
sumber
Anda dapat memproses output secara sinkron atau asinkron .
1. Contoh sinkron
Perhatikan bahwa lebih baik memproses output dan kesalahan : keduanya harus ditangani secara terpisah.
(*) Untuk beberapa perintah (di sini
StartInfo.Arguments
) Anda harus menambahkan/c
arahan , jika tidak proses akan macet diWaitForExit()
.2. Contoh asinkron
Jika Anda tidak perlu melakukan operasi yang rumit dengan output, Anda dapat mem-bypass metode OutputHandler, cukup menambahkan handler secara langsung sebaris:
sumber
Baiklah, bagi siapa saja yang ingin membaca Kesalahan dan Keluaran, tetapi mendapatkan jalan buntu dengan salah satu solusi, yang disediakan dalam jawaban lain (seperti saya), berikut adalah solusi yang saya buat setelah membaca penjelasan MSDN untuk
StandardOutput
properti.Jawaban didasarkan pada kode T30:
sumber
Cara standar .NET melakukan ini adalah membaca dari aliran StandardOutput proses . Ada contoh dalam dokumen MSDN tertaut. Serupa, Anda dapat membaca dari StandardError , dan menulis ke StandardInput .
sumber
Dimungkinkan untuk mendapatkan output shell baris perintah dari suatu proses seperti dijelaskan di sini: http://www.c-sharpcorner.com/UploadFile/edwinlima/SystemDiagnosticProcess12052005035444AM/SystemDiagnosticProcess.aspx
Ini tergantung mencoder. Jika itu melampaui status ini pada baris perintah maka ya :)
sumber
Anda dapat menggunakan memori bersama untuk 2 proses berkomunikasi melalui, periksa
MemoryMappedFile
Anda terutama akan membuat file yang dipetakan memori
mmf
dalam proses induk menggunakan pernyataan "menggunakan" kemudian buat proses kedua sampai berakhir dan biarkan ia menulis hasilnya kemmf
menggunakanBinaryWriter
, kemudian membaca hasil darimmf
menggunakan proses induk, Anda juga bisa meneruskanmmf
nama menggunakan argumen baris perintah atau kode keras itu.pastikan ketika menggunakan file yang dipetakan dalam proses induk yang Anda buat proses anak tulis hasilnya ke file yang dipetakan sebelum file yang dipetakan dirilis dalam proses induk
Contoh: proses induk
Proses anak
untuk menggunakan sampel ini, Anda harus membuat solusi dengan 2 proyek di dalamnya, kemudian Anda mengambil hasil build dari proses anak dari% childDir% / bin / debug dan salin ke% parentDirectory% / bin / debug kemudian jalankan proyek induk
childDir
danparentDirectory
apakah nama folder proyek Anda di pc semoga berhasil :)sumber
Cara meluncurkan proses (seperti file bat, skrip perl, program konsol) dan memiliki output standar yang ditampilkan pada formulir windows:
Anda dapat menemukan
ProcessCaller
di tautan ini: Meluncurkan proses dan menampilkan output standarnyasumber
Anda dapat mencatat keluaran proses menggunakan kode di bawah ini:
sumber
Solusi yang bekerja untuk saya dalam win dan linux adalah mengikuti
sumber