mirror of
https://github.com/awesomeWM/awesome
synced 2024-11-17 07:47:41 +01:00
6c559e188c
GLib is very careful not to "fetch" any children that it was not asked to fetch. Thus, if awesome inherits some children, it does not reap them and starts collecting zombies. Thus, this commit makes awesome handle SIGCHLD directly: On SIGCHLD, a byte is written to a pipe. The main loop reads from this pipe and collects children via waitpid(-1). Unknown children cause a warning to be printed. We might want to remove this warning if it turns out to be annoying. This commit adds 79 lines and removes 89 lines. Thus, this is a net reduction in lines of codes. This is because previously, we gave the list of still-running children that we know about to the next awesome instance we a --reap command line argument. This was added so that awesome does not get zombie children. However, this commit fixes this problem and makes all the code for this 'feature' unnecessary. Fixes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=886393 Signed-off-by: Uli Schlachter <psychon@znc.in>
35 lines
1.1 KiB
C
35 lines
1.1 KiB
C
/*
|
|
* spawn.h - Lua configuration management header
|
|
*
|
|
* Copyright © 2009 Julien Danjou <julien@danjou.info>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*
|
|
*/
|
|
|
|
#ifndef AWESOME_SPAWN_H
|
|
#define AWESOME_SPAWN_H
|
|
|
|
#include "objects/client.h"
|
|
|
|
#include <lua.h>
|
|
|
|
void spawn_init(void);
|
|
void spawn_start_notify(client_t *, const char *);
|
|
int luaA_spawn(lua_State *);
|
|
void spawn_child_exited(pid_t, int);
|
|
|
|
#endif
|
|
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|