tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Determining if a system is in shutdown




Am 29.08.15 um 09:56 schrieb Christos Zoulas:
> In article <55E15DDB.8010504%tk-sls.de@localhost>,
> Tilman Kranz  <tilman.kranz%tk-sls.de@localhost> wrote:
>> Hello,
>>
>> for a patch for "nodm" (a lightweight X session manager), I try
>> to find out how to determine if a system is currently in shutdown.
>>
>> The intention is to prevent "nodm" from restarting an X session
>> that caught a SIGTERM while the system is in shutdown.
>>
>> I found this to work on GNU using SVr4 "utmp.h":
>>
>>  #include<stdlib.h>
>>  #include<utmp.h>
>>
>>  int in_shutdown(void) {
>>      struct utmp * ut;
>>
>>      setutent();
>>
>>      while ((ut = getutent()) != NULL)
>>          if (ut->ut_type == RUN_LVL)
>>            /* Current runlevel is pid_t modulo 256.
>>               Runlevel 0 means system is in shutdown. */
>>            return ut->ut_pid % 256 == 0;
>>
>>      return -1;
>>  }
>>
>> (This does not work with POSIX "utmpx.h", because there is
>> no RUN_LVL there, for obvious reasons).
>>
>> The question:
>>
>> My question is if there is an analogous way in BSD to determine
>> if a system shutdown is currently scheduled.
> 
> Yes, the convention is that if _PATH_NOLOGIN exists, you should not
> allow logins.

As _PATH_NOLOGIN is defined in a header file, are these constants
somehow available to shell scripts, too?  So that they can be queried at
run time?


Home | Main Index | Thread Index | Old Index