Linux_FAQ:程式設計問題(轉)

ba發表於2007-08-12
Linux_FAQ:程式設計問題(轉)[@more@]Q: 為什麼我用 gcc 編譯出來的 a.out 不能執行?
  
  我編輯了一個 test.c 並用 gcc 編譯, 生成一個 a.out 檔案
  
  但是為什麼它不能執行?
  
  
  A: 在 Linux 下執行程式需要指定檔案路徑。 請試試 ./a.out
  
  這裡用 ./ 告訴 shell 要執行的程式在當前目錄。
  
  當然如果環境變數 PATH 中包含了路徑, 則可以不用這樣指定。
  
  可以透過設定使用者配置檔案改變它。
  
  bsh, ksh, bash:
  
  vi ~/.bashrc
  
  add this line:
  
  PATH=$PATH:.
  
  csh, tcsh:
  
  vi ~/.cshrc
  
  add this line:
  
  setenv PATH $PATH:.
  
  這樣下次等錄就可以直接執行當前目錄的程式了。
  
  
  -- by Singleboy (孤鷹)
  
  
  
  Q: 程式設計問題: 如何在 Linux 中得到特殊鍵的掃描碼?
  
  在 DOS 下面可以透過 INT86 函式進行系統呼叫來得到方向鍵的碼。
  
  但是在 UNIX 下用 GCC 的什麼函式可以讀入方向鍵,
  
  又是用什麼函式來輸出一個方向鍵呢?
  
  
  A: there is structure kbentry defined in /usr/include/linux/kd.h
  
  and,u can find definitions of the structure’s members in
  
  /usr/include/linux/keyboard.h,
  
  then use ioctrl() to set the keymap,and read() to read the
  
  value retured when a key being pressed.
  
  
  -- by jbru (無病無災便是福)
  
  
  Q: 程式設計問題: 關於檔案結束的判斷偶要對一個log檔案進行分析,透過下面的方法開啟
  
  if ((fp=fopen(free,"r+"))==NULL){ //the free ip file created by manual printf("can’t open file %s.",free);
  
  putchar(’ ’);
  
  exit(0);
  
  }
  
  透過fgets函式從fp流中取出字串驗證,正確!
  
  但當偶用while(fgetc(fp)!=EOF){}進行提取分析時,卻發生
  
  "Segmentation fault"錯誤!
  
  嗚呼!為什麼?????
  
  
  A: "Segmentation fault"錯誤!
  
  ~~~~~~~~~~~~~~~~~~~ 這種錯誤是因為指標為空。
  
  而且用EOF作為檔案結束的標誌不太好,可能檔案結束了還是!=EOF。
  
  Try to use:
  
  while(!feof(fp)) {
  
  fgetc(fp);
  
  }
  
  試試看。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-949925/,如需轉載,請註明出處,否則將追究法律責任。

相關文章