linuxシステムで自分のプログラムのログを自分で定義したファイルに出力します

8699 ワード

   ,     /    . 

bash  : echo "message" >> /path/to/yourlogfile

c:         , fopen("/path/to/yourlogfile", "a");     fwrite
    printf/fprintf(stderr,     /             ,  dup2:
#include <stdio.h>
#include <unistd.h>
int main()
{
    FILE *fp = fopen("log.txt", "a");
    if(fp){
        int no = fileno(fp);
        dup2(no, 1);
        dup2(no, 2);
        printf("stdout log
"); fprintf(stderr, "stderr log
"); fclose(fp); } return 0; }

C C++ 。  

2010-08-27 13:54:38|   : C++  |   :      memcpy  cout  endl  |  

: C C++ 。

C++  
#include <ios> 
#include <iostream> 
#include <fstream> 
// .h  
using namespace std; 
int main() 

    ofstream ofs("e:\\a.txt"); 
    streambuf *osb = cout.rdbuf(ofs.rdbuf()); 
    cout << "to file" << endl; 
    cout.rdbuf(osb); 
    cout << "to term" << endl;

    return 0;

C 1

#include <stdio.h> 
#include <string.h> 
void main() 

    FILE old_stdout; 
    FILE *fp = fopen("e:\\a.txt", "w"); 
    memcpy(&old_stdout, &_iob[1], sizeof(FILE)); 
    memcpy(&_iob[1], fp, sizeof(FILE)); 
     
    /*call any functions..*/ 
    printf("to file"); 
    /**/ 
    /* */ 
    fflush(stdout); 
    memcpy(&_iob[1], &old_stdout, sizeof(FILE)); 
    printf("to term"); 
    fclose(fp); 
}

 

C 2::
#include<iostream>

#include<fstream>

using namespace std;

 

int main()

{

    freopen("intput.txt","r",stdin);

    freopen("output.txt","w",stdout);

    double a;

    cin>>a;

    cout<<"Jackie"<<endl;

    return 0;

}