longlonglinux
linuxt提供了系統函數sysconf()用來讀取CPU和內存信息,先來了解一下sysconf()函數吧。
頭文件
#include<unistd.h>
函數原型
long sysconf (int name);
說明
sysconf() 返回選項 ( 變數) 的當前值,這個值可配置的但也是受系統限制的。在成功完成的情況下,sysconf() 返回 變數的當前值。該值受到的限制將少於編譯時 <limits.h>, <unistd.h> 或 <time.h> 中可用的對應值。大多數這些 變數的值在調用進程的生存時間內不變。
如果出錯,那麼函數返回 -1 ,並適當地設置 errno 。當沒有錯誤發生時, -1 也是一個合法的返回值。因此,程序要檢查錯誤,應該在調用 sysconf() 之前將 errno 設置為 0 ,然後,如果返回 -1,則檢驗到錯誤。
參數 name 指定我們感興趣的運行時限制的名字,它必須是以值中之一(除非另有說明,否則返回值都是整數):
_SC_2_C_BIND : 一個布爾值,指出是否支持 POSIX C 語言綁定。返回值是 _POSIX2_C_BIND 。
_SC_2_C_DEV : 一個布爾值,指出是否支持 POSIX C 語言開發使用工具選項。返回值是 _POSIX2_C_DEV 。
_SC_2_C_VERSION : 它指出支持哪一個 ISO POSIX.2 標准 (命令) 的版本。返回值是 _POSIX2_C_VERSION 。
_SC_2_CHAR_TERM : 一個布爾值,指出是否至少支持一個 終端。返回值是 _POSIX2_CHAR_TERM 。
_SC_2_FORT_DEV : 一個布爾值,指出是否支持 FORTRAN 開發使用工具選項。返回值是 POSIX2_FORT_DEV 。
注意:1、 CLK_TCK 的值是可變的,因此,不應該假設它是一個 編譯時間 常量。
2、調用 setrlimit 會使 OPEN_MAX 的值發生改變。
3、 通過將 sysconf (_SC_PHYS_PAGES) 和 sysconf (_SC_PAGESIZE) 相乘,來確定 物理內存的總量 (以 位元組為單位) 可以返回一個值,該值超出 32 位進程中 long 或 unsigned long 可表示的最大值。同樣適用於通過將 sysconf (_SC_PAGESIZE) 和 sysconf (_SC_AVPHYS_PAGES) 想乘,來確定未使用的 物理內存的總量 (以 位元組為單位)。這個問題有兩個工作區。第 1 個工作區將程序作為 64 位的進程進行編譯 (從而使 long 足夠大到可以容納乘法運算的結果) ,但是,這樣做的缺點是得到的程序只能在 64 位的內核中運行。第 2 個工作區是用來將得到的乘法運算結果存儲在一個 64 位的量中,如 longlong_t (Solaris OS 類型) 或 long long (linux)。它的有點是可以在 32 位和 64 位的內核中正確工作。
B. 如何在linux下實現使用命令轉換long字元串到日期
date -d '1970-01-01 UTC 946684800 seconds' +"%Y-%m-%d %T %z"
start_time=`date -d "1970-01-01 UTC $date_start seconds" +"%Y-%m-%d %H:%M:%S"`;
Linux相關的知識點可以網路搜索《Linux就該這么學》學習哦
C. 求教Linux中關於long long數據類型的處理
long long是C99的東西.編譯時加上C99選項