- Timestamp:
- May 18, 2015, 5:29:22 PM (9 years ago)
- Branches:
- (u'spielwiese', '2a584933abf2a2d3082034c7586d38bb6de1a30a')
- Children:
- b7b51e5dd11e262b4887f510543fc5600bc0c00b
- Parents:
- 01b7f7a9030616e6d505c575db91b858569380a3
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/links/ssiLink.cc
r01b7f7 rea8692 1139 1139 fputs("99\n",d->f_write); 1140 1140 fflush(d->f_write); 1141 if (d->f_read!=NULL) { s_close(d->f_read);s_free(d->f_read);} 1142 if (d->f_write!=NULL) { fclose(d->f_write); d->f_write=NULL; } 1141 1143 } 1142 1144 if (d->r!=NULL) rKill(d->r); … … 1150 1152 struct timespec rem; 1151 1153 int r; 1152 do1154 loop 1153 1155 { 1154 1156 r = nanosleep(&t, &rem); 1155 1157 t = rem; 1156 } while ((r < 0) && (errno == EINTR) 1157 && (si_waitpid(d->pid,NULL,WNOHANG) == 0)); 1158 if ((r == 0) && (kill(d->pid,0) == 0)) 1158 // child finished: 1159 if (si_waitpid(d->pid,NULL,WNOHANG) != 0) break; 1160 // other signal, waited s>= 100 ms: 1161 if ((r==0) || (errno != EINTR)) break; 1162 } 1163 if (kill(d->pid,0) == 0) 1159 1164 { 1160 1165 kill(d->pid,15); 1161 1166 t.tv_sec=5; // <=5s 1162 1167 t.tv_nsec=0; 1163 do1168 loop 1164 1169 { 1165 1170 r = nanosleep(&t, &rem); 1166 1171 t = rem; 1167 } while ((r < 0) && (errno == EINTR) 1168 && (si_waitpid(d->pid,NULL,WNOHANG) == 0)); 1169 if ((r == 0) && (kill(d->pid,0) == 0)) 1172 // child finished: 1173 if (si_waitpid(d->pid,NULL,WNOHANG) != 0) break; 1174 // other signal, waited s>= 100 ms: 1175 if ((r==0) || (errno != EINTR)) break; 1176 } 1177 if (kill(d->pid,0) == 0) 1170 1178 { 1171 1179 kill(d->pid,9); // just to be sure … … 1174 1182 } 1175 1183 } 1176 if (d->f_read!=NULL) s_close(d->f_read); 1177 if (d->f_read!=NULL) s_free(d->f_read); 1178 if (d->f_write!=NULL) fclose(d->f_write); 1184 if (d->f_read!=NULL) { s_close(d->f_read);s_free(d->f_read);} 1185 if (d->f_write!=NULL) { fclose(d->f_write); d->f_write=NULL; } 1179 1186 if ((strcmp(l->mode,"tcp")==0) 1180 1187 || (strcmp(l->mode,"fork")==0))
Note: See TracChangeset
for help on using the changeset viewer.