[lxc-devel] [PATCH] only re-open fds if stdin is a tty

Serge Hallyn serge.hallyn at ubuntu.com
Fri Oct 30 05:14:12 UTC 2015


Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>
---
 src/lxc/lxc_usernsexec.c | 30 ++++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/src/lxc/lxc_usernsexec.c b/src/lxc/lxc_usernsexec.c
index 26608d6..37d92fb 100644
--- a/src/lxc/lxc_usernsexec.c
+++ b/src/lxc/lxc_usernsexec.c
@@ -278,20 +278,22 @@ int main(int argc, char *argv[])
 	memset(ttyname0, '\0', sizeof(ttyname0));
 	memset(ttyname1, '\0', sizeof(ttyname1));
 	memset(ttyname2, '\0', sizeof(ttyname2));
-	ret = readlink("/proc/self/fd/0", ttyname0, sizeof(ttyname0));
-	if (ret < 0) {
-		perror("unable to open stdin.");
-		exit(1);
-	}
-	ret = readlink("/proc/self/fd/1", ttyname1, sizeof(ttyname1));
-	if (ret < 0) {
-		printf("Warning: unable to open stdout, continuing.");
-		memset(ttyname1, '\0', sizeof(ttyname1));
-	}
-	ret = readlink("/proc/self/fd/2", ttyname2, sizeof(ttyname2));
-	if (ret < 0) {
-		printf("Warning: unable to open stderr, continueing.");
-		memset(ttyname2, '\0', sizeof(ttyname2));
+	if (isatty(0)) {
+		ret = readlink("/proc/self/fd/0", ttyname0, sizeof(ttyname0));
+		if (ret < 0) {
+			perror("unable to open stdin.");
+			exit(1);
+		}
+		ret = readlink("/proc/self/fd/1", ttyname1, sizeof(ttyname1));
+		if (ret < 0) {
+			printf("Warning: unable to open stdout, continuing.");
+			memset(ttyname1, '\0', sizeof(ttyname1));
+		}
+		ret = readlink("/proc/self/fd/2", ttyname2, sizeof(ttyname2));
+		if (ret < 0) {
+			printf("Warning: unable to open stderr, continueing.");
+			memset(ttyname2, '\0', sizeof(ttyname2));
+		}
 	}
 
 	lxc_list_init(&active_map);
-- 
2.5.0



More information about the lxc-devel mailing list