雜談Linux編程(二)

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

相關文章
相關標籤/搜索