왜 "종료"를 매개변수로 몇 초씩 사용할 수 없나요?

왜 "종료"를 매개변수로 몇 초씩 사용할 수 없나요?

shutdown명령은 타이머를 분과 시간 단위로만 설정할 수 있지만 초는 설정할 수 없어서 놀랐습니다.

매뉴얼 페이지에서

시간 문자열은 시간/분을 나타내는 "hh:mm" 형식일 수 있으며 종료 수행 시간을 지정하고 24시간 형식으로 지정됩니다. 또는 지금부터 m까지의 특정 시간을 나타내는 "+m" 구문을 사용할 수도 있습니다. "now"는 즉시 종료를 트리거하는 "+0"의 별칭입니다. 시간 매개변수가 지정되지 않으면 "+1"이 암시됩니다.

내가 하려는 것은 내 창 관리자(qtile)에 버튼을 만드는 것입니다. 이 버튼을 마우스 왼쪽 버튼으로 누른 후 5초 이내에 컴퓨터를 종료하고 싶은데 클릭을 놓치면 마우스 오른쪽 버튼으로 버튼을 누르고 이 작업을 취소하고 싶습니다.

sleep 5; shutdown now취소하고 싶으면 안 돼요.

취소 작업을 수행하는 방법이 있습니까? 두 번째 정밀도를 갖는 종료와 유사한 프로그램이 있습니까?

답변1

Andy Dalton의 조언(질문의 설명 참조)을 따르는 것이 가장 좋은 방법입니다.

그러나 정말로 이 작업을 수행하는 프로그램을 원한다면 다음과 같이 작성하는 것이 쉽습니다.

int main(void) { sleep(5); system("shutdown -h now"); }

그것을 넣고 secondsshutdown.c컴파일하면 gcc secondsshutdown.c -o secondsshutdown원하는 대로 작동할 것입니다.

(이 코드는 컴파일할 때 더 이상 경고를 표시하지 않거나 옵션을 허용하도록 향상될 수 있습니다. 여기서는 그렇게 하지 않으므로 읽기가 더 쉬워집니다.)

관련 정보