converting source code from window to linux
c++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5
I am converting some source code from windows to running on ubuntu.
However, the windows is using the code below to log messages and get the current time the message is logged. However, this is windows. What is the best way to convert this to running on linux?
struct _timeb timebuffer;
char *timeline;
_ftime(&timebuffer);
timeline = ctime(&(timeb开发者_如何学运维uffer.time));
Many thanks for any advice,
in linux a similar function ftime
is used which gives you the time do
#include <sys/timeb.h>
/* .... */
struct timeb tp;
ftime(&tp);
printf("time = %ld.%d\n",tp.time,tp.millitm);
this will give you the time in second and milliseconds.
The windows code is calling ctime
, which is available on Linux too and prepares a date-time string such as:
"Wed Jun 30 21:49:08 1993\n"
The man page for ctime()
on Linux documents:
char *ctime(const time_t *timep);
char *ctime_r(const time_t *timep, char *buf);
So, you don't want to use ftime()
on linux... that populates a struct timeb
buffer which isn't accepted by ctime()
.
Instead, you can get/use a time_t
value using the time()
function as in:
#include <time.h>
time_t my_time_t;
time(&my_time_t);
if (my_time_t == -1)
// error...
char buffer[26]; // yes - a magic number - see the man page
if (ctime_r(&my_time_t, buffer) == NULL)
// error...
// textual representation of current date/time in buffer...
Use Boost libraries (datetime) as your questions look to be more about date/time. Most of the boost lib is portable. If you look for GUI libraries QT is the best one which is again portable b/w windows/*nix.
精彩评论