popen을 사용하는 다른 프로그램을 여는 C로 작성된 프로그램이 있습니다. 나는 그 프로그램의 PID 나 어떤 종류의 핸들러를 얻고 싶다. 그래서 특정 제한 시간이 지나면 그것을 죽이기 위해, 또는 어떤 램과 stdout 한계를 초과한다면 그것을 죽이려고한다. PID를 필요로하는 ptrace로이 작업을 수행해야한다고 생각합니다. PID를 얻는 방법을 모르겠습니다.C - popen으로 열린 프로세스의 PID를 얻으십시오
3
A
답변
6
PID를 반환하는 popen
의 구현을 직접 작성하십시오. 기존의 popen
주변의 어떤 미친 짓보다 훨씬 못 생겼습니다. 그물을 통해 popen
구현 소스 코드를 찾을 수 있습니다. Here's one.
0
ptrace를 사용하지 않고 ulimits 및 다른 트릭을 사용하여 원하는 기능을 수행 할 수도 있습니다. 명령을 작성하여 "sh -c 'ulimit [ulimit strings]; whatever-command'"
과 비슷한 것으로 작성할 수 있습니다. ulimit -v
은 RAM 제한을 처리합니다. CPU 시간 제한 (ulimit -t
)은 제한 시간을 근사 할 수 있습니다. 그렇지 않다면 popen
을 다시 쓰고 싶다면 setitimer
에 전화를 걸 수 있습니다. stdout은 덜 직관적입니다. 하지만 쉘 리다이렉트로 stdout을 로깅한다면 ulimit -f
이 그렇게 할 것이라고 생각합니다. 부모에게서 아이의 stdout을 읽고 있다면 스스로 추적 할 수 있고 너무 길면 신호로 죽일 수 있습니다.
관련 문제
- 1. 프로세스의 부모 PID를 어떻게 결정합니까
- 2. 리눅스에서 javaws jnlp 애플릿의 PID를 얻으십시오
- 3. COM1을 통해 comunnicate하는 pid를 얻으십시오
- 4. nohup으로 시작한 프로세스의 PID를 ssh를 통해 얻습니다.
- 5. 내 C 바이너리를 호출하는 프로세스의 PID를 인쇄하는 방법이 있습니까
- 6. 리눅스에서 어떻게 시스템 호출을하는 프로세스의 PID를 검색합니까?
- 7. 이름이 아닌 경로별로 프로세스의 PID를 검색합니다.
- 8. PHP에서 백그라운드 프로세스의 PID를 얻는 방법은 무엇입니까?
- 9. 하위 프로세스의 PID를 가져 오는 방법은 무엇입니까?
- 10. Python에서 Popen으로 열린 gzip 파일을 사용할 수 있습니까?
- 11. NHibernate : 열린 모든 세션을 얻으십시오
- 12. FIFO에 pid를 쓰십시오 - C
- 13. C++ (win32)을 사용하는 하나의 프로세스의 CPU 사용량을 얻으십시오.
- 14. Console-App이 프로세스의 모든 열린 파일을 가져옵니다.
- 15. C#으로 만든 프로세스의 pid는
- 16. 영원히 사용하기; 어떻게하면 하위 프로세스의 PID를 찾을 수 있습니까?
- 17. 백그라운드 프로세스의 PID를 추적하여 linux에 프로세스 이름과 함께 저장하십시오.
- 18. Perl 시스템()으로 시작하는 프로세스의 PID를 얻으려면 어떻게해야합니까?
- 19. OS X에서 PID를 사용하여 프로세스의 현재 작업 디렉토리 가져 오기
- 20. 스크립트 X가 표준 입력을 제공하는 프로세스의 PID를 얻는 중
- 21. Perl의 시스템 기능으로 생성 된 프로세스의 PID를 얻으려면 어떻게해야합니까?
- 22. Windows XP에서 exec()가 시작한 프로세스의 PID를 가져올 수 있습니까?
- 23. 배치 파일 내에서 방금 시작한 프로세스의 PID를 얻는 방법은 무엇입니까?
- 24. COM coclass를 인스턴스화하여 시작된 프로세스의 PID를 확인하는 방법은 무엇입니까?
- 25. perl의 부모 프로세스에서 죽은 자식 프로세스의 PID를 얻으려면 어떻게해야합니까?
- 26. bash에서 트랩을 사용하여 종료 된 백그라운드 프로세스의 PID를 캡처하십시오.
- 27. 트위스트 생성 프로세스의 PID를 안정적으로 얻는 방법은 무엇입니까?
- 28. Java : 열린 RandomAccessFile 인스턴스에서 파일 이름을 얻으십시오.
- 29. Greasemonkey 모든 열린 탭의 이름을 얻으십시오
- 30. 하위 프로세스 출력을 C 또는 Python에서 popen으로 버퍼링하지 않음
s/미친/끔찍한 :-) –
대단히 감사합니다. 최고의 솔루션 인 것 같습니다. – Paris