2 * Use set/get/endgrent calls from two processes to iterate over the
3 * password database. This checks the multithreaded stuff works.
14 void dump_grent(char *id
)
20 /* Open results file */
22 sprintf(fname
, "/tmp/getgrent_r-%s.out-%d", id
, getpid());
24 if ((fptr
= fopen(fname
, "w")) == NULL
) {
25 fprintf(stderr
, "ERROR: could not open file %s: %s\n", fname
,
30 /* Dump group database */
34 while((gr
= getgrent()) != NULL
) {
35 fprintf(fptr
,"%s:%s:%d:%d\n", gr
->gr_name
, gr
->gr_passwd
,
41 /* Close results file */
46 int main(int argc
, char **argv
)
53 printf("ERROR: must specify output file identifier\n");
57 /* Fork child process */
59 if ((pid
= fork()) == -1) {
60 printf("ERROR: unable to fork\n");
64 /* Handle test case */
82 printf("PASS: run getgrent_r.c\n");