mirror of
https://github.com/sheumann/hush.git
synced 2024-12-27 01:32:08 +00:00
findInitPid() has been implemented and it seems to work.
reboot has been changed to take advantage of findInitPid();
This commit is contained in:
parent
395b216a2e
commit
f95ca97d1b
@ -26,5 +26,6 @@
|
||||
extern int
|
||||
reboot_main(int argc, char ** argv)
|
||||
{
|
||||
exit( kill(1, SIGUSR2));
|
||||
/* don't assume init's pid == 1 */
|
||||
exit( kill(findInitPid(), SIGUSR2));
|
||||
}
|
||||
|
@ -157,6 +157,7 @@ extern void write_mtab(char* blockDevice, char* directory,
|
||||
extern void erase_mtab(const char * name);
|
||||
extern int check_wildcard_match(const char* text, const char* pattern);
|
||||
extern long getNum (const char *cp);
|
||||
extern pid_t findInitPid();
|
||||
|
||||
|
||||
#if defined BB_MTAB
|
||||
|
3
reboot.c
3
reboot.c
@ -26,5 +26,6 @@
|
||||
extern int
|
||||
reboot_main(int argc, char ** argv)
|
||||
{
|
||||
exit( kill(1, SIGUSR2));
|
||||
/* don't assume init's pid == 1 */
|
||||
exit( kill(findInitPid(), SIGUSR2));
|
||||
}
|
||||
|
43
utility.c
43
utility.c
@ -1068,14 +1068,39 @@ extern long getNum (const char *cp)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
/* findInitPid()
|
||||
*
|
||||
* This finds the pid of init (which is not always 1).
|
||||
* Currently, it's implemented by rummaging through the proc filesystem.
|
||||
*
|
||||
* [return]
|
||||
* 0 failure
|
||||
* pid when init's pid is found.
|
||||
*/
|
||||
extern pid_t
|
||||
findInitPid()
|
||||
{
|
||||
pid_t init_pid;
|
||||
char filename[256];
|
||||
char buffer[256];
|
||||
|
||||
/* no need to opendir ;) */
|
||||
for (init_pid = 1; init_pid < 65536; init_pid++) {
|
||||
FILE *status;
|
||||
|
||||
sprintf(filename, "/proc/%d/status", init_pid);
|
||||
status = fopen(filename, "r");
|
||||
if (!status) { continue; }
|
||||
fgets(buffer, 256, status);
|
||||
fclose(status);
|
||||
|
||||
if ( (strcmp(&buffer[6], "init\n") == 0)) {
|
||||
return init_pid;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* END CODE */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user