Advertisement
Programator2

Presmerovanie stderr

Mar 17th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void saveCtxToFileForTest(BPU_T_Mecs_Ctx *globalCtx, BPU_T_Mecs_Ctx *threadCtx) {
  2.     FILE *fp1, *fp2;
  3.  
  4.     int old_stderr = dup(fileno(stderr));  // Preserve original file descriptor for stdout.
  5.  
  6.     // save result to "file1"
  7.     fp1 = freopen("file1", "w", stderr);  // Open new stdout
  8.     BPU_printGf2SparseQcMatrix(&(globalCtx->code_ctx->code_spec->qcldpc->Q_sparse)); // this function prints to stderr by default
  9.     fclose(fp1);
  10.  
  11.     // save result to "file2"
  12.     fp1 = freopen("file2", "w", stderr);  // Open new stdout
  13.     BPU_printGf2SparseQcMatrix(&(threadCtx->code_ctx->code_spec->qcldpc->Q_sparse));  // this function prints to stderr by default
  14.     fclose(fp1);
  15.    
  16.     // close file descriptors and redirect output back to stderr
  17.     dup2(old_stderr, STDERR_FILENO); // Vratime povodny deskriptor na dvojku (STDERR_FILENO)
  18.     fp2 = fdopen(STDERR_FILENO, "w");   // Open old stdout as a stream XXX Otvorime dvojku, lebo odtial berie konzola vystup
  19.     // fclose(stderr);    // Equivalent to fclose(fp1); XXX Zavreli sme ho na riadku 14
  20.     stderr = fp2;      // Assign fp2 to stdout
  21.  
  22.     close(old_stderr);   // Close the file descriptor so pipes work sanely
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement