mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-15 15:34:58 +00:00
Pass the ttyname to the lxc_setup function
From: Daniel Lezcano <dlezcano@fr.ibm.com> Retrieve the ttyname and pass it to the lxc_setup function. Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
This commit is contained in:
parent
6e590161b7
commit
939229eb16
@ -48,6 +48,7 @@ LXC_TTY_HANDLER(SIGQUIT);
|
|||||||
int lxc_start(const char *name, char *argv[])
|
int lxc_start(const char *name, char *argv[])
|
||||||
{
|
{
|
||||||
char init[MAXPATHLEN];
|
char init[MAXPATHLEN];
|
||||||
|
char tty[MAXPATHLEN];
|
||||||
char *val = NULL;
|
char *val = NULL;
|
||||||
int fd, lock, sv[2], sync = 0, err = -LXC_ERROR_INTERNAL;
|
int fd, lock, sv[2], sync = 0, err = -LXC_ERROR_INTERNAL;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
@ -69,6 +70,11 @@ int lxc_start(const char *name, char *argv[])
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ttyname_r(0, tty, sizeof(tty))) {
|
||||||
|
tty[0] = '\0';
|
||||||
|
lxc_log_warning("failed to get tty name");
|
||||||
|
}
|
||||||
|
|
||||||
/* Synchro socketpair */
|
/* Synchro socketpair */
|
||||||
if (socketpair(AF_LOCAL, SOCK_STREAM, 0, sv)) {
|
if (socketpair(AF_LOCAL, SOCK_STREAM, 0, sv)) {
|
||||||
lxc_log_syserror("failed to create communication socketpair");
|
lxc_log_syserror("failed to create communication socketpair");
|
||||||
@ -112,7 +118,7 @@ int lxc_start(const char *name, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Setup the container, ip, names, utsname, ... */
|
/* Setup the container, ip, names, utsname, ... */
|
||||||
err = lxc_setup(name);
|
err = lxc_setup(name, tty);
|
||||||
if (err) {
|
if (err) {
|
||||||
lxc_log_error("failed to setup the container");
|
lxc_log_error("failed to setup the container");
|
||||||
if (write(sv[0], &err, sizeof(err)) < 0)
|
if (write(sv[0], &err, sizeof(err)) < 0)
|
||||||
@ -207,10 +213,8 @@ wait_again:
|
|||||||
if (lxc_setstate(name, STOPPING))
|
if (lxc_setstate(name, STOPPING))
|
||||||
lxc_log_error("failed to set state %s", lxc_state2str(STOPPING));
|
lxc_log_error("failed to set state %s", lxc_state2str(STOPPING));
|
||||||
|
|
||||||
#ifdef NETWORK_DESTROY
|
|
||||||
if (clone_flags & CLONE_NEWNET && conf_destroy_network(name))
|
if (clone_flags & CLONE_NEWNET && conf_destroy_network(name))
|
||||||
lxc_log_error("failed to destroy the network");
|
lxc_log_error("failed to destroy the network");
|
||||||
#endif
|
|
||||||
|
|
||||||
err = 0;
|
err = 0;
|
||||||
out:
|
out:
|
||||||
@ -233,10 +237,8 @@ err_state_failed:
|
|||||||
err_child_failed:
|
err_child_failed:
|
||||||
err_pipe_read2:
|
err_pipe_read2:
|
||||||
err_pipe_write:
|
err_pipe_write:
|
||||||
#ifdef NETWORK_DESTROY
|
|
||||||
if (clone_flags & CLONE_NEWNET)
|
if (clone_flags & CLONE_NEWNET)
|
||||||
conf_destroy_network(name);
|
conf_destroy_network(name);
|
||||||
#endif
|
|
||||||
err_create_network:
|
err_create_network:
|
||||||
err_pipe_read:
|
err_pipe_read:
|
||||||
err_waitpid_failed:
|
err_waitpid_failed:
|
||||||
|
Loading…
Reference in New Issue
Block a user