Changeset 3435 for trunk/src/kash/jobs.c
- Timestamp:
- Sep 2, 2020, 10:30:54 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kash/jobs.c
r3434 r3435 86 86 #ifdef KASH_USE_FORKSHELL2 87 87 static int forkparent(shinstance *psh, struct job *jp, union node *n, int mode, pid_t pid); 88 static void forkchild(shinstance *psh, struct job *jp, union node *n, int mode , int vforked);88 static void forkchild(shinstance *psh, struct job *jp, union node *n, int mode); 89 89 #endif 90 90 … … 149 149 } while (0); 150 150 151 setsignal(psh, SIGTSTP , 0);152 setsignal(psh, SIGTTOU , 0);153 setsignal(psh, SIGTTIN , 0);151 setsignal(psh, SIGTSTP); 152 setsignal(psh, SIGTTOU); 153 setsignal(psh, SIGTTIN); 154 154 if (sh_getpgid(psh, 0) != psh->rootpid && sh_setpgid(psh, 0, psh->rootpid) == -1) 155 155 error(psh, "Cannot set process group (%s) at %d", … … 167 167 shfile_close(&psh->fdtab, psh->ttyfd); 168 168 psh->ttyfd = -1; 169 setsignal(psh, SIGTSTP , 0);170 setsignal(psh, SIGTTOU , 0);171 setsignal(psh, SIGTTIN , 0);169 setsignal(psh, SIGTSTP); 170 setsignal(psh, SIGTTOU); 171 setsignal(psh, SIGTTIN); 172 172 } 173 173 psh->jobctl = on; … … 798 798 return -1; /* won't get here */ 799 799 case 0: 800 forkchild(psh, jp, n, mode , 0);800 forkchild(psh, jp, n, mode); 801 801 return 0; 802 802 default: … … 817 817 /* child */ 818 818 (void)arglen; 819 forkchild(psh, jp, n, mode , 0);819 forkchild(psh, jp, n, mode); 820 820 sh_exit(psh, child(psh, nchild, argp)); 821 821 return 0; … … 866 866 #endif 867 867 void 868 forkchild(shinstance *psh, struct job *jp, union node *n, int mode , int vforked)868 forkchild(shinstance *psh, struct job *jp, union node *n, int mode) 869 869 { 870 870 int wasroot; … … 875 875 wasroot = psh->rootshell; 876 876 TRACE((psh, "Child shell %d\n", sh_getpid(psh))); 877 if (!vforked) 878 psh->rootshell = 0; 879 880 closescript(psh, vforked); 881 clear_traps(psh, vforked); 882 #if JOBS 883 if (!vforked) 884 psh->jobctl = 0; /* do job control only in root shell */ 877 psh->rootshell = 0; 878 879 closescript(psh); 880 clear_traps(psh); 881 #if JOBS 882 psh->jobctl = 0; /* do job control only in root shell */ 885 883 if (wasroot && mode != FORK_NOJOB && mflag(psh)) { 886 884 if (jp == NULL || jp->nprocs == 0) … … 896 894 sh_strerror(psh, errno), __LINE__); 897 895 } 898 setsignal(psh, SIGTSTP , vforked);899 setsignal(psh, SIGTTOU , vforked);896 setsignal(psh, SIGTSTP); 897 setsignal(psh, SIGTTOU); 900 898 } else if (mode == FORK_BG) { 901 ignoresig(psh, SIGINT , vforked);902 ignoresig(psh, SIGQUIT , vforked);899 ignoresig(psh, SIGINT); 900 ignoresig(psh, SIGQUIT); 903 901 if ((jp == NULL || jp->nprocs == 0) && 904 902 ! fd0_redirected_p(psh)) { … … 910 908 #else 911 909 if (mode == FORK_BG) { 912 ignoresig(psh, SIGINT , vforked);913 ignoresig(psh, SIGQUIT , vforked);910 ignoresig(psh, SIGINT); 911 ignoresig(psh, SIGQUIT); 914 912 if ((jp == NULL || jp->nprocs == 0) && 915 913 ! fd0_redirected_p(psh)) { … … 921 919 #endif 922 920 if (wasroot && iflag(psh)) { 923 setsignal(psh, SIGINT, vforked); 924 setsignal(psh, SIGQUIT, vforked); 925 setsignal(psh, SIGTERM, vforked); 926 } 927 928 if (!vforked) 929 psh->jobs_invalid = 1; 921 setsignal(psh, SIGINT); 922 setsignal(psh, SIGQUIT); 923 setsignal(psh, SIGTERM); 924 } 925 926 psh->jobs_invalid = 1; 930 927 } 931 928
Note:
See TracChangeset
for help on using the changeset viewer.