explain why forks fail
This commit is contained in:
parent
638199ebfd
commit
1468e9a310
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: eval.c,v 1.107 2013/06/27 23:22:04 yamt Exp $ */
|
/* $NetBSD: eval.c,v 1.108 2014/01/26 22:38:20 christos Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1993
|
* Copyright (c) 1993
|
||||||
@ -37,7 +37,7 @@
|
|||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)eval.c 8.9 (Berkeley) 6/8/95";
|
static char sccsid[] = "@(#)eval.c 8.9 (Berkeley) 6/8/95";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: eval.c,v 1.107 2013/06/27 23:22:04 yamt Exp $");
|
__RCSID("$NetBSD: eval.c,v 1.108 2014/01/26 22:38:20 christos Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
@ -845,15 +845,17 @@ evalcommand(union node *cmd, int flgs, struct backcmd *backcmd)
|
|||||||
*/
|
*/
|
||||||
if (cmdentry.cmdtype == CMDNORMAL) {
|
if (cmdentry.cmdtype == CMDNORMAL) {
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
int serrno;
|
||||||
|
|
||||||
savelocalvars = localvars;
|
savelocalvars = localvars;
|
||||||
localvars = NULL;
|
localvars = NULL;
|
||||||
vforked = 1;
|
vforked = 1;
|
||||||
switch (pid = vfork()) {
|
switch (pid = vfork()) {
|
||||||
case -1:
|
case -1:
|
||||||
TRACE(("Vfork failed, errno=%d\n", errno));
|
serrno = errno;
|
||||||
|
TRACE(("Vfork failed, errno=%d\n", serrno));
|
||||||
INTON;
|
INTON;
|
||||||
error("Cannot vfork");
|
error("Cannot vfork (%s)", strerror(serrno));
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
/* Make sure that exceptions only unwind to
|
/* Make sure that exceptions only unwind to
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: jobs.c,v 1.71 2012/12/31 14:10:15 dsl Exp $ */
|
/* $NetBSD: jobs.c,v 1.72 2014/01/26 22:38:20 christos Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1991, 1993
|
* Copyright (c) 1991, 1993
|
||||||
@ -37,7 +37,7 @@
|
|||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)jobs.c 8.5 (Berkeley) 5/4/95";
|
static char sccsid[] = "@(#)jobs.c 8.5 (Berkeley) 5/4/95";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: jobs.c,v 1.71 2012/12/31 14:10:15 dsl Exp $");
|
__RCSID("$NetBSD: jobs.c,v 1.72 2014/01/26 22:38:20 christos Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
@ -858,14 +858,16 @@ makejob(union node *node, int nprocs)
|
|||||||
int
|
int
|
||||||
forkshell(struct job *jp, union node *n, int mode)
|
forkshell(struct job *jp, union node *n, int mode)
|
||||||
{
|
{
|
||||||
int pid;
|
pid_t pid;
|
||||||
|
int serrno;
|
||||||
|
|
||||||
TRACE(("forkshell(%%%d, %p, %d) called\n", jp - jobtab, n, mode));
|
TRACE(("forkshell(%%%d, %p, %d) called\n", jp - jobtab, n, mode));
|
||||||
switch ((pid = fork())) {
|
switch ((pid = fork())) {
|
||||||
case -1:
|
case -1:
|
||||||
TRACE(("Fork failed, errno=%d\n", errno));
|
serrno = errno;
|
||||||
|
TRACE(("Fork failed, errno=%d\n", serrno));
|
||||||
INTON;
|
INTON;
|
||||||
error("Cannot fork");
|
error("Cannot fork (%s)", strerror(serrno));
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
forkchild(jp, n, mode, 0);
|
forkchild(jp, n, mode, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user