thread는 자신(어떤 프로세스의)의 일부입니다. 그러니 exit()를 부르면 프로세스는 죽는게(종료되는) 맞고요. 일단 쓰레드에서 어떻게 kill 명령을 주셨는지 모르겠는데 (아마 exec?를 쓰셨다고 생각되는데) 제대로된 권한 및 프로세스 ID를 가지고 kill 명령을 주셨다고 가정한다면 그 status(return code)를 확인해 보세요.
이런식으로 작성된 쉘 스크립트를 쓰레드에서 실행시켜 App 전체를 종료시키고 다시 실행하고 있습니다.
main말고 다른 쓰레드에서 exit(0)으로 종료시킬경우 device driver와 연결에 해제되는데 -> main에서 device 연결한 것을 종료할 때 해제 시킴
kill 명령어가 들어있는 위에 스크립트로 프로세스를 종료시킬땐 device driver를 close 안시키고
새로운 App을 실행시키더라구요..
새로 실행된 App을 Ctrl + C 로 종료시킬때 device driver에서 연결 해제됐다는 dmsg가 2번 출력됩니다.
아마 처음 App과 연결된 device가 이제 해제된거 아닌가 하는 생각이듭니다.
새로운 App이 죽을때 그제야 device close 메세지가 뜨는게 정상적으로 처음 App이 죽었다고 할수있을까요?
아마 device driver 또는 application에 오류가 발생하면 재시작하시는 걸 하시려나 보네요.
이럴때 실행을 감시하는 다른 프로그램을 만들어서 만약 일정 시간동안 감지가 안되면 다시 재시동시키는 방식을 쓰는 것 같더군요.
물론 어떤 하드웨어나 요구조건, 작업 환경조건에서 돌아가는지 모르기때문에 잘 모르겠지만 아마 이런 방식으로 꼭 할 필요는 없을 겁니다.
thread는 자신(어떤 프로세스의)의 일부입니다.
thread는 자신(어떤 프로세스의)의 일부입니다. 그러니 exit()를 부르면 프로세스는 죽는게(종료되는) 맞고요. 일단 쓰레드에서 어떻게 kill 명령을 주셨는지 모르겠는데 (아마 exec?를 쓰셨다고 생각되는데) 제대로된 권한 및 프로세스 ID를 가지고 kill 명령을 주셨다고 가정한다면 그 status(return code)를 확인해 보세요.
#!/bin/sh
두서 없이 말했는데 친절한 답변 감사드립니다.ㅠㅠ
#!/bin/sh
pid=`ps -ef | grep "das_ru_app.elf" | grep -v "grep" | awk '{print $1}'`
kill -9 $pid
/app/abc.elf"
이런식으로 작성된 쉘 스크립트를 쓰레드에서 실행시켜 App 전체를 종료시키고 다시 실행하고 있습니다.
main말고 다른 쓰레드에서 exit(0)으로 종료시킬경우 device driver와 연결에 해제되는데 -> main에서 device 연결한 것을 종료할 때 해제 시킴
kill 명령어가 들어있는 위에 스크립트로 프로세스를 종료시킬땐 device driver를 close 안시키고
새로운 App을 실행시키더라구요..
새로 실행된 App을 Ctrl + C 로 종료시킬때 device driver에서 연결 해제됐다는 dmsg가 2번 출력됩니다.
아마 처음 App과 연결된 device가 이제 해제된거 아닌가 하는 생각이듭니다.
새로운 App이 죽을때 그제야 device close 메세지가 뜨는게 정상적으로 처음 App이 죽었다고 할수있을까요?
아마 device driver 또는
아마 device driver 또는 application에 오류가 발생하면 재시작하시는 걸 하시려나 보네요.
이럴때 실행을 감시하는 다른 프로그램을 만들어서 만약 일정 시간동안 감지가 안되면 다시 재시동시키는 방식을 쓰는 것 같더군요.
물론 어떤 하드웨어나 요구조건, 작업 환경조건에서 돌아가는지 모르기때문에 잘 모르겠지만 아마 이런 방식으로 꼭 할 필요는 없을 겁니다.
댓글 달기