몇 시간 전 나는 일부 프로세스를 종료하기 위해 C++ 코드를 작성해야했습니다. 내 메인 프로그램에서 나는 입력으로 다른 파일 이름 문자열을 가진 시스템 ("...")으로 대형 CAE 시스템 패키지를 실행한다. CAE 소프트웨어는 프로세스 이름 문자열 에 들어있는 많은 프로세스를 생성합니다. CAE-프로세스 근무 시간의 일부>MAX_TIME, 나는 그들을 종료 할 필요가보다 :,,C++에서 프로세스를 죽이는 방법, 이름의 일부만 알고 있음
Usage:
kill pid ... Send SIGTERM to every process listed.
kill signal pid ... Send a signal to every process listed.
kill -s signal pid ... Send a signal to every process listed.
kill -l List all signal names.
kill -L List all signal names in a nice table.
kill -l signal Convert between signal numbers and names.
내가 execvp는 실행하려고 different ways running kill or pkill over bash script 시도 :
//filename contains part of CAE-process name
string s="/bin/kill -9 `ps aux | grep "+filename+" | awk {'print $2'}`";
system(s.c_str());
출력했다 호출 시스템 ("name_of_script.sh")은 스크립트에 kill -9 *filename*
이 포함되어 있지만 결과는 같습니다.
kill
및 /bin/kill
을 사용하면 동일한 출력 인 bash -c kill...
도 있습니다.
kill -9 `ps aux | grep filename | awk {'print $2'}`
종료 필요한 모든 프로세스 : 내 시스템 (우분투 단정) 에서 kill
그놈 터미널를 사용
! 그것은 작품입니다.
pkill
을 사용하는 경우 이해할 수있는 것처럼 전체 프로세스 이름이 필요하지만이를 제거하기 위해서는 이름 일부만 사용해야합니다.
또한 pthreads를 사용하여 자식 프로세스로 계산 프로세스를 래핑하려고 시도했지만 pthread_cancel으로 중지하려고 시도했지만 CAE 시스템 프로세스가 신호를받지 못하기 때문에 작동하지 않습니다 (나는 그들을 트래핑한다고 생각합니다). SIGTERM입니다.
pthread_kill로 자식 스레드 - "포장"을 죽이면 부모 (내 주요 프로그램)도 죽입니다.
나는 (? 그래서 그들은 내 프로그램 프로세스 차일 수없는, 그리고이 -Z 플래그가없는) CAE 프로세스의 PID가 CAE-프로세스를 중지하지 않는 메인 프로그램을 닫기 kill from signals.h
전화를 모른다
주 프로그램에서> MAXTIME을 (를) 실행하는 CAE 프로세스를 어떻게 닫을 수 있습니까?
문제
내가 디버거 QtCreator에서 (GDB)를 통해 메인 프로그램을 실행 한 것이 었습니다. QtCreator가 없으면 셸 스크립트는 올바른 방법으로 인수를 사용하여 실행되지만 인수는 올바르게 양방향으로 전달됩니다.또한 내가있는 CmdLine에 파일 이름이없는 일부 CAE 프로세스를 취소해야하지만 부모 또는이 과정의 자녀가. 쉘 스크립트에서 사용할 수 : $P
살해 프로세스의 PID와 변수입니다
cat /proc/"$P"/status | grep PPid | grep -o "[0-9]*"
. Here are several methods 모든 하위 프로세스를 종료합니다.
나는 쓸데없이 쓸 것입니다. C++에서 /proc/xxxx/status
을 PPid
= ppid_of_my main_program까지 스캔하고 해당 분기를 잘라냅니다.
이러한 프로세스가 프로그램에서 만드는 프로세스입니까? pid를 기억하고 그런 식으로 죽이는 것이 훨씬 쉬울 것입니다. – Wug
정말 쉘 대신 C++에서이 작업을 수행 하시겠습니까? – pmr
시스템 ("launcher.sh filename")으로 CAE를 호출합니다. 파일 이름은 매번 다릅니다. 오, 나는 발사기의 PID 만 가져 가면 2 초 만에 완료되고 CAE 프로세스가 생성됩니다. –