Write vs fprintf - why are they different, and which are better?

Recently, I began to study the wonders of pthreads according to POSIX 1003.1c.

PThreads may seem complicated, but mostly these are simple threads that we use in the class to create parallel behavior: https://computing.llnl.gov/tutorials/pthreads/

Since I was still studying, my teacher gave us the C code to play with:

/* Creates two threads, one printing 10000 "a"s, the other printing
   10000 "b"s.
   Illustrates: thread creation, thread joining. */

#include <stddef.h>
#include <stdio.h>
#include <unistd.h>
#include "pthread.h"

void * process(void * arg)
{
  int i;
  fprintf(stderr, "Starting process %s\n", (char *) arg);
  for (i = 0; i < 100; i++) {
       write(1, (char *) arg, 1);
//      fprintf(stdout, (char *) arg, 1);
  }
  return NULL;
}

int main()
{
  int retcode;
  pthread_t th_a, th_b;
  void * retval;

  retcode = pthread_create(&th_a, NULL, process, "a");
  if (retcode != 0) fprintf(stderr, "create a failed %d\n", retcode);

  retcode = pthread_create(&th_b, NULL, process, "b");
  if (retcode != 0) fprintf(stderr, "create b failed %d\n", retcode);

  retcode = pthread_join(th_a, &retval);
  if (retcode != 0) fprintf(stderr, "join a failed %d\n", retcode);

  retcode = pthread_join(th_b, &retval);
  if (retcode != 0) fprintf(stderr, "join b failed %d\n", retcode);

  return 0;
}
  • Instructions for starting and compiling (for Linux):  
  • Run command: `sudo apt-get install build-essential`  
  • Download this code (obviously xD)  
  • Use the following command to compile: `gcc -D_REENTRANT filenName.c -lpthread`  
  • Run the result with the command: ../ a.out`

, , write fprintf.

write, :

Starting process a
aaaaaaaaaaaaaaaaaaaaaaaaaaaaStarting process b
aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

fprintf, , :

Starting process a
Starting process b
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababbabaabaabaababbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

" " . ? , write , fprintf ?

C, ?

+5
2

write - : , ( ) , .

fprintf ( fwrite , FILE *), - , . , , .

, write, , , , , . , .

fprintf . , a , . , ( write). , , . , , fprintf a b, .

"" "", write , fprintf ( fwrite, write).

+9

. n .

fprintf , % d,% s , , .

+1

All Articles