1. Linux中的記時
----獲得當前時間
=> time 精度爲秒
=> ftime精度毫秒
=> gettimeofday精度微秒
=> 時間格式間相互轉化的函數gmtime, ctime, asctime, mktime等。函數
----sleep
=> sleep 精度爲秒
=> usleep精度爲微秒
=> nanosleep精度爲納秒this
'man 7 time' for more infospa
2. 執行新程序,對fork-exec的封裝(儘可能避免使用system())進程
int spawn (char* program, char** arg_list)
{
pid_t child_pid;get
/* Duplicate this process. */
child_pid = fork ();
if (child_pid != 0)
/* This is the parent process. */
return child_pid;
else {
/* Now execute PROGRAM, searching for it in the path. */
execvp (program, arg_list);
/* The execvp function returns only if an error occurs. */
fprintf (stderr, "an error occurred in execvp\n");
abort ();
}
}it
3. 清除子進程
方法1:循環調用wait3和wait4,使用WNOBLOCK標誌。
方法2:處理SIGCHLD信號,在此信號的handler中使用wait,從而獲得子進程的狀態,而且清除。
方法2比較好。io