27
27
#include <sys/prctl.h>
28
28
#include <unistd.h>
29
29
#include <time.h>
30
+ #include <errno.h>
30
31
#include <stdio.h>
31
32
#include <stdlib.h>
32
33
#include <string.h>
@@ -151,12 +152,17 @@ static void create_threads(int num_threads, int thr_tids[])
151
152
static int child_func_process (void * arg )
152
153
{
153
154
struct child_args * ca = (struct child_args * )arg ;
155
+ int ret ;
154
156
155
157
close (ca -> pfd [0 ]);
156
158
157
159
create_threads (ca -> num_threads , ca -> thr_tids );
158
160
159
- write (ca -> pfd [1 ], & ca -> thr_tids , sizeof (int ) * ca -> num_threads );
161
+ ret = write (ca -> pfd [1 ], & ca -> thr_tids , sizeof (int ) * ca -> num_threads );
162
+ if (ret == -1 )
163
+ printf ("write failed on pfd[%d] - error (%s)\n" ,
164
+ ca -> pfd [1 ], strerror (errno ));
165
+
160
166
close (ca -> pfd [1 ]);
161
167
162
168
while (1 )
@@ -169,7 +175,7 @@ static unsigned char child_func_process_stack[STACK_SIZE];
169
175
void create_processes (int num_processes , int num_threads , struct child_args proc [])
170
176
{
171
177
pid_t cpid ;
172
- int i ;
178
+ int i , ret ;
173
179
174
180
for (i = 0 ; i < num_processes ; ++ i ) {
175
181
proc [i ].num_threads = num_threads ;
@@ -184,7 +190,10 @@ void create_processes(int num_processes, int num_threads, struct child_args proc
184
190
}
185
191
186
192
for (i = 0 ; i < num_processes ; ++ i ) {
187
- read (proc [i ].pfd [0 ], & proc [i ].thr_tids , sizeof (int ) * proc [i ].num_threads );
193
+ ret = read (proc [i ].pfd [0 ], & proc [i ].thr_tids , sizeof (int ) * proc [i ].num_threads );
194
+ if (ret == -1 )
195
+ printf ("read failed on proc[%d].pfd[0] error (%s)\n" ,
196
+ i , strerror (errno ));
188
197
close (proc [i ].pfd [0 ]);
189
198
}
190
199
}
0 commit comments