2013-01-31 3 views
0

자식 프로세스에서 android logcat -v time 명령을 실행하고 잠시 후 프로세스를 종료하려는 루비 스크립트를 작성 중입니다 (부모 프로세스가 완료되면 xyz하고있다). 예를 들어자식 프로세스에서 실행중인 android logcat 중지

내가 가진 : childpid = Process.fork { adb -s <device-serial> logcat -c adb -s <device-serial> logcat -v time>/path-to-file/forkLog.log } 나는 ADB 로그 캣 코드가 다른 아이에서 실행되는 읽은에 따르면

sleep(30) 
    #parent do thing else here ... 
Process.kill("SIGHUP", childpid) #kill the child process 

sup- 프로세스이므로 Process.kill을 시도 할 때 childpid는 중지되지만 해당 하위 프로세스는 중지되지 않습니다.

어떻게 부모 프로세스에서 logcat -v time> forklog.log 프로세스를 종료합니까 ?? 당신이 bash는 스크립트를 호출하는 포크를 사용할 때

답변

0

일반적으로, 대신 커널의 Kernel::exec()를 사용할 수 있습니다 :: 시스템() 또는 커널 ::`

Process.fork{exec('adb -s <device-serial> logcat -c && adb -s <device-serial> logcat -v time>/path-to-file/forkLog.log'} 

는 차이점은 임원이다 은 쉘 스크립트로 Ruby 프로세스를으로 바꾸고, 다른 두 가지는 하위 프로세스를 생성합니다.

+0

감사합니다. 나는 이것을 시도했지만 작동하지 않는 adb 다른 하위 프로세스에서 실행되고있을 수 있습니다 --- 내가 좀 더 읽고 난 후 – user1861040

+0

기본적으로 모든 (위대한) 손자를 죽일 다음이 순서대로 작동하도록 자식을 죽일 방법이 필요합니다. .. 그러나 이것을하는 방법? – user1861040

관련 문제