chciałbym uruchomić proces, zakończyć uruchomiony proces na podstawie nazwy
ktoś może polecić jakaś lekka bibliotekę do tego która ogarnie zbliżonym API Linux/Windows ?
chciałbym uruchomić proces, zakończyć uruchomiony proces na podstawie nazwy
ktoś może polecić jakaś lekka bibliotekę do tego która ogarnie zbliżonym API Linux/Windows ?
@Marius.Maximus: Jeżeli chodzi o multiprocessing w C++ to jedyna libka, która mi przychodzi na myśl to boost,
ale on raczej lekki nie jest.
Marius.Maximus napisał(a):
chciałbym uruchomić proces, zakończyć uruchomiony proces na podstawie nazwy
Słówko teorii. Nazwę (w sensie nazwy pliku) ma PROGRAM, który MOŻE zostać uruchomiony, w razie uruchomienia o pliku-programie mówi sie czasem, że jest obrazem procesu.
Wiec potencjalnie istnieje proces, który nie charakteryzuje sie nazwą pliku, z jakiego powstał. Z pewnością taki jest uniksowy init
, sam sobie zadaję ćwiczenie intelektualne, jakie by mogły być inne.
Skąd takie postawienie tematu? Jakiś tool narzędziowy?
Większość "normalnych" podejść zakłada władzę nad procesami potomnymi, w szczególności z ich uruchomienia rodzic posiada jakiś PID dziecka (dosłownie pid w uniksach, i odpowiednik u małomiekkiego)
Inny problem jaki "nazwa" rodzi, to gdy tenże cmd.exe
albo bash
daje etykietę czemuś innemu. Masz ich siedemnaście ... co zrobisz ? Albo java.exe
Dawniej miałem ułożone w głowie wyniki eksperymentu przemianowania / skasowania programu po uruchomieniu, chyba to było szerzej mozliwe w uniksach a mnie w microsoftach
Marius.Maximus napisał(a):
ktoś może polecić jakaś lekka bibliotekę do tego która ogarnie zbliżonym API Linux/Windows ?
Tematy oddzielnie na każdy wydają sie tak łatwe (chyba? wszystko jest łatwe, jeśli to ma zrobic kto inny) a zarazem odmienne, że dwie implementacje mogą być lżejsze niż jedna typu "wspólny mianownik"
Najbardziej prymitywnie będzie po prostu użyć gołego std::system z biblioteki standardowej.
Zabić proces można używając aplikacji taskkill
:
system("taskkill /IM example.exe /F");
Pod Linuksem można zamiast tego użyć pkill
.