读书人

Linux无法生成文件的有关问题。

发布时间: 2012-08-07 14:54:49 作者: rapoo

Linux无法生成文件的问题。。。。
做了一个跨平台的程序,windows下跑是没问题了,但是linux下无法创建Log文件,很蛋疼,找了半天没找到原因。。


C/C++ code
int Loggers::open(void)//初始化创建新Log文档,用于本次运行时写入。{        char logbuf[30] ={0};        //获取当前时间        time_t t_time=ACE_OS::time();//当前时间秒数。        tm*p_tm=ACE_OS::localtime(&t_time);//  定义一个时间结构,当前时间。        ACE_OS::strftime(logbuf,30,"%Y%m%d%H%M",p_tm);//年月日时分秒输出至logbuf。        std::string filena;        filena.assign(logbuf,strlen(logbuf));        filena += ".log";//形成文件名。        char buf[1024]={0};        sprintf(buf,"touch %s",filena.c_str());        ACE_OS::system(buf);        logfile.open(filena.c_str(),ios::in|ios::out|ios::app);//创建新log文档,以时间命名。        if (!logfile)        {                std::cout << "err: unable to open the log file: "<< std::endl;                return -1;        }        std::cout << "Log initialize success!" << std::endl;        std::cout << "Logfile created in " << filena << std::endl;        return 0;}


这是 生成log文件的成员函数,其中的logfile为 fstream类型的私有成员。。




[解决办法]
1. 权限
2. 进程打开的文件描述符限制
3. 不知道了。。。
[解决办法]
C/C++ code
        logfile.open(filena.c_str(),ios::in|ios::out|ios::app);//创建新log文档,以时间命名。
[解决办法]
采用默认的最好。oftream,iftream对应有默认的打开方式。

读书人网 >UNIXLINUX

热点推荐