어떻게 인스턴스를 실행하도록 프로그램을 제한 할 수 있습니까? 현재 나는 데몬 (시작과 자동 멈춤)으로 프로그램을 돌리고 있는데, 사용자가 클릭하여 다시 시작하려고 할 때 (유효한 유즈 케이스가 아님), 프로세스는 사용자 컨텍스트에서 시작되고 나는 이것을 여러 가지 이유로 피하고 싶다. .실행중인 프로그램 인스턴스 하나만 허용
어떻게하면됩니까?
지금부터는 프로세스 목록을 얻고 몇 가지 검사를하고 시작 자체에서 빠져 나오지 만이 방법은 문제가되지 않지만 깨끗하지는 않습니다.
누군가가 나에게 더 나은 해결책을 줄 수 있습니까? 그리고 ps를 사용하여 프로세스 목록을 얻었습니다. 신뢰할 수있는 API가 있습니까?
프로세스의 첫 번째 실행시 일부 파일을 잠글 수 있으며 이후에 실행될 때 파일이 이미 잠긴 경우 실행을 거부 할 수 있습니다 ('flock (2)'참조) – Guillaume
생성 될 수 있습니다. 데몬이 충돌 할 때의 문제? – rplusg
Mac OS X에서'fnctl'에 대한 맨 페이지는 "프로세스가 종료되면 주어진 프로세스의 파일과 관련된 모든 잠금이 제거됩니다."라고 말합니다. 따라서 충돌이 발생할 경우 안전 할 것이라고 생각합니다.하지만 항상 그래야합니다. 교착 상태가 발생하지 않도록주의하십시오. HTTP : // 유래 [1] [1] [방법 - 투 - 방지 - 어 - 리눅스 프로그램에서 실행 - 더 -보다 한 번을] : – Guillaume