2
* lxc: linux Container library
4
* (C) Copyright IBM Corp. 2007, 2008
7
* Daniel Lezcano <dlezcano at fr.ibm.com>
9
* This library is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU Lesser General Public
11
* License as published by the Free Software Foundation; either
12
* version 2.1 of the License, or (at your option) any later version.
14
* This library is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
* Lesser General Public License for more details.
19
* You should have received a copy of the GNU Lesser General Public
20
* License along with this library; if not, write to the Free Software
21
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28
#include <sys/param.h>
29
#include <sys/signal.h>
30
#include <sys/types.h>
37
lxc_log_define(lxc_stop, lxc);
41
int lxc_stop(const char *name)
43
char init[MAXPATHLEN];
45
int fd, lock, ret = -LXC_ERROR_INTERNAL;
48
lock = lxc_get_lock(name);
51
return -LXC_ERROR_ESRCH;
54
if (lock < 0 && lock != -LXC_ERROR_EBUSY)
57
snprintf(init, MAXPATHLEN, LXCPATH "/%s/init", name);
58
fd = open(init, O_RDONLY);
60
SYSERROR("failed to open init file for %s", name);
64
if (read(fd, val, sizeof(val)) < 0) {
65
SYSERROR("failed to read %s", init);
71
if (kill(pid, SIGKILL)) {
72
SYSERROR("failed to kill %zd", pid);