Apakah ada yang setara di Windows untuk "exec" Unix Shell? Pada dasarnya, saya perlu menghindari forking proses baru, sehingga pipa input / output dipertahankan, serta id proses.
Edit:
Jadi, inilah masalah saya. Saya memiliki proses A yang memulai skrip, dan skrip ini berakhir dengan mengeksekusi proses B. Saya perlu A untuk mendapatkan semua output B, serta dapat membunuh B dengan membunuh proses yang telah dihasilkannya (skrip) .
Di Unix, menjalankan B dengan exec
melakukan pekerjaan itu.
windows
shell
windows-command-prompt
Daniel C. Sobral
sumber
sumber
Jawaban:
AFAIK tidak ada. Windows tidak memiliki
execv()
bagaimana bash exec melakukannya.call
berfungsi untuk memanggil file batch (mudah, cukup tafsirkan file dalam juru bahasa saat ini, mirip dengan.
perintah bash ) tetapi tidak untuk exe.Ini membuatnya tidak mungkin untuk menulis skrip pembungkus satu baris untuk skrip dalam bahasa apa pun di Windows. Anda akan selalu mendapatkan bahwa "Hentikan pekerjaan batch?" omong kosong pada Ctrl + C dan membunuh proses batch (tidak dengan Ctrl + C, dari task manager katakan) tidak akan membunuh proses anak. Saya sekarang mencari file template C untuk melakukan pembungkus ini.
UPDATE: Windows memang memiliki
_execv()
lapisan kompatibilitas POSIX di MSVCRT, tetapi AFAIK (belum mengujinya) itu hanya pembungkusCreateProcess
sehingga akan selalu membuat proses baru, tidak dapat menggantikan proses saat ini.sumber
Saya pikir panggilan melakukan apa yang Anda inginkan, tetapi saya tidak 100% yakin.
sumber
Anda dapat membangun perintah batch dinamis dan menjalankannya berdasarkan output dari operasi sebelumnya. Saya tidak yakin ini akan menjadi solusi dalam kasus Anda, tetapi kode berikut berfungsi dengan baik.
sumber
exec
...call
/path/to/exe/something.exe
sumber