2009-06-09 7 views
3

Linux에서 실행중인 프로그램의 실행 시간을 제한하고 싶습니다. 내 SCons는 스크립트에 라인처럼 넣어 :시간 제한이있는 Scons 명령

명령 (","COM "", "ulimit를 1 -t, myprogram")

및 무한 루프 프로그램을 테스트 : 그것은하지 않았다 일과 프로그램은 영원히 달렸다.

내가 누락 된 항목이 있습니까?

는 - TSF

답변

4

ulimit -t 1 한계가 CPU 시간을 1 초로 설정되는 것을 의미한다. 무한 루프 프로그램이 어떤 종류의 내부 루프에 sleep을 사용하면 CPU 시간을 거의 사용하지 않습니다. 이것은 시계 시간에 진짜의 1 초안에 죽지 않을 것이라는 것을 의미합니다. 실제로 1 초 할당을 사용하는 데 몇 분 또는 몇 시간이 걸릴 수 있습니다.

SCons 외부에서 명령을 실행하면 어떻게됩니까?

bash: ulimit: cpu time: cannot modify limit: Operation not permitted 

편집 : 아마도 당신은 한계가 이미 0으로 설정되어있는 경우

ulimit -t 1; ./myprogram 

는 예를 들어, 다음과 같은 말을 할 수있다 ... 모두의 제한을 변경할 수있는 권한이 없습니다 그것은 그런 것 같습니다 the -t option is broken on Ubuntu 9.04. 수정본은 2009 년 6 월 5 일에 커밋되었지만 업데이트가 적용될 때까지 다소 시간이 걸릴 수 있습니다. 9.10까지는 수정되지 않을 수 있습니다.

역사적으로이 문제는 Ubuntu 10.04에서 더 이상 존재하지 않습니다.

또한이 스크립트 사용할 수 있습니다
+0

내 프로그램 무한 루프가 (C에서) 같은되었다 : 동안 (1) X = 1; 그래서 잠을 자지 못했습니다. - tsf – Tsf

+0

이것은 Scons의 문제가 아닌 것 같습니다! 시도했지만 ulimit -t 1; ./myprogram 리눅스 페도라 설치에서 작동했지만 (중단되었습니다) 우분투에서는 작동하지 않았습니다. 나는 그것이 어떤 설정 값에 달려 있는지 확인해야한다. 감사합니다. – Tsf

+0

아! 나는 openSuse에서 그것을 시험해 보았고 효과가 있었다. 우분투에서 ... 아무것도. 1 초 후에도 오류는 발생하지 않지만 kill은 발생하지 않습니다. – richq