Changeset 9db944 in git for Singular/links/ssiLink.cc
- Timestamp:
- Apr 12, 2016, 2:26:05 PM (8 years ago)
- Branches:
- (u'spielwiese', 'a719bcf0b8dbc648b128303a49777a094b57592c')
- Children:
- 1a1f82bc8f8fca00c6831cafb921250413a6c7d2
- Parents:
- 9ef321bcdf1ec45cb2df3f22b14b2a6c67306895
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/links/ssiLink.cc
r9ef321 r9db944 1121 1121 if (l!=NULL) 1122 1122 { 1123 SI_LINK_SET_CLOSE_P(l); 1123 1124 ssiInfo *d = (ssiInfo *)l->data; 1124 1125 if (d!=NULL) … … 1143 1144 if (d!=NULL) 1144 1145 { 1146 // send quit signal 1145 1147 if ((d->send_quit_at_exit) 1146 1148 && (d->quit_sent==0)) … … 1148 1150 fputs("99\n",d->f_write); 1149 1151 fflush(d->f_write); 1150 if (d->f_read!=NULL) { s_close(d->f_read);s_free(d->f_read);}1151 if (d->f_write!=NULL) { fclose(d->f_write); d->f_write=NULL; }1152 1152 } 1153 // clean ring 1153 1154 if (d->r!=NULL) rKill(d->r); 1155 // did the child to stop ? 1154 1156 si_waitpid(d->pid,NULL,WNOHANG); 1155 1157 if ((d->pid!=0) … … 1163 1165 loop 1164 1166 { 1167 // wait till signal or time rem: 1165 1168 r = nanosleep(&t, &rem); 1166 1169 t = rem; … … 1170 1173 if ((r==0) || (errno != EINTR)) break; 1171 1174 } 1172 if (kill(d->pid,0) == 0) 1175 if (kill(d->pid,0) == 0) // pid still exists 1173 1176 { 1174 1177 kill(d->pid,15); … … 1177 1180 loop 1178 1181 { 1182 // wait till signal or time rem: 1179 1183 r = nanosleep(&t, &rem); 1180 1184 t = rem; 1181 1185 // child finished: 1182 1186 if (si_waitpid(d->pid,NULL,WNOHANG) != 0) break; 1183 // other signal, waited s>= 100 ms:1187 // other signal, waited s>= 5 s: 1184 1188 if ((r==0) || (errno != EINTR)) break; 1185 1189 } … … 1191 1195 } 1192 1196 } 1193 if (d->f_read!=NULL) { s_close(d->f_read);s_free(d->f_read); }1197 if (d->f_read!=NULL) { s_close(d->f_read);s_free(d->f_read);d->f_read=NULL;} 1194 1198 if (d->f_write!=NULL) { fclose(d->f_write); d->f_write=NULL; } 1195 1199 if ((strcmp(l->mode,"tcp")==0)
Note: See TracChangeset
for help on using the changeset viewer.