From b5057f9406e53e2f4b02c0e43ed95d653dd57ee0 Mon Sep 17 00:00:00 2001 From: Guangyao Ma Date: Thu, 8 Jul 2021 19:41:32 +0800 Subject: [PATCH] fix: set pgrpid when start mksh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit liteos内核下,启动mksh作为shell之前,需要将mksh设置为前台进程组。 close #I3YMA3 Signed-off-by: Guangyao Ma Change-Id: I638fee18940867e5e1502585d3ea3e998602b611 --- services/src/init_service.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/services/src/init_service.c b/services/src/init_service.c index fc85be162..e5b16a6d9 100644 --- a/services/src/init_service.c +++ b/services/src/init_service.c @@ -176,6 +176,19 @@ int ServiceStart(Service *service) INIT_LOGE("service %s execve failed! err %d.\n", service->name, errno); } #else + // mksh is set to the foreground + if (strstr(service->pathArgs[0], "mksh") != NULL) { + int gid = getpgrp(); + if (gid < 0) { + INIT_LOGE("service %s get group id failed, err %d\n", service->name, errno); + exit(0x7f); + } + ret = tcsetpgrp(STDIN_FILENO, gid); + if (ret != 0) { + INIT_LOGE("service %s tcsetpgrp failed, err %d\n", service->name, errno); + exit(0x7f); + } + } char* env[] = {"LD_LIBRARY_PATH=/storage/app/libs", NULL}; if (execve(service->pathArgs[0], service->pathArgs, env) != 0) { INIT_LOGE("service %s execve failed! err %d.\n", service->name, errno); -- Gitee