當前位置:首頁 » 操作系統 » linux函數定義

linux函數定義

發布時間: 2022-05-11 00:23:25

linux信號處理函數定義,看不懂,請大師們幫忙

P((void))應該是個宏,並且是個函數指針,舉例 deifine P((Y)) (Y y) 其中Y為傳遞的參數類型

static void failure P((void)) = static void failure (void) ,是一個函數名

static void failure P((void))一樣的

void qsignal(sig,action)const int sig;void(*action)P((void));//定義函數qsignal,但是我感覺應該沒這種用法把,應該寫成void qsignal(const int sig,void(*action)P((void)));當然了要看你的編譯器了,如果你是用的什麼單片機的編譯器,也有可能有這種寫法,其實就是

申明了函數原型,在說明形參的類型 我記得貌似早起的c語言89版有這個寫法的
qsignal(SIGINT,failure); 貌似應該是qsignal(SIGINT,&failure);

你看看還有什麼不明白的

Ⅱ linux怎麼讀區間函數

系統環境:ubuntu10.04

簡介
本文旨在為了解Linux各種時間類型與時間函數提供技術文檔。

1、Linux下常用時間類型
Linux下常用時間類型有四種:time_t、structtm、structtimeval、structtimespec

1.1time_t時間類型
time_t類型在time.h中定義:

[cpp]view plain

  • #ifndef__TIME_T

  • #define__TIME_T

  • typedeflongtime_t;

  • #endif

  • 可見,time_t實際是一個長整型。其值表示為從UTC(coordinateniversaltime)時間1970年1月1日00時00分00秒(也稱為Linux系統的Epoch時間)到當前時刻的秒數。由於time_t類型長度的限制,它所表示的時間不能晚於2038年1月19日03時14分07秒(UTC)。為了能夠表示更久遠的時間,可用64位或更長的整形數來保存日歷時間,這里不作詳述。
    使用time()函數獲取當前時間的time_t值,使用ctime()函數將time_t轉為當地時間字元串。
    備註:UTC時間有時也稱為GMT時間,其實UTC和GMT兩者幾乎是同一概念。它們都是指格林尼治標准時間,只不過UTC的稱呼更為正式一點。兩者區別在於前者是天文上的概念,而後者是基於一個原子鍾。

    1.2structtm時間類型
    tm結構在time.h中定義:

    [cpp]view plain

  • #ifndef_TM_DEFINED

  • structtm{

  • inttm_sec;/*秒-取值區間為[0,59]*/

  • inttm_min;/*分-取值區間為[0,59]*/

  • inttm_hour;/*時-取值區間為[0,23]*/

  • inttm_mday;/*日-取值區間為[1,31]*/

  • inttm_mon;/*月份-取值區間為[0,11]*/

  • inttm_year;/*年份-其值為1900年至今年數*/

  • inttm_wday;/*星期-取值區間[0,6],0代表星期天,1代表星期1,以此類推*/

  • inttm_yday;/*從每年的1月1日開始的天數-取值區間為[0,365],0代表1月1日*/

  • inttm_isdst;/*夏令時標識符,使用夏令時,tm_isdst為正,不使用夏令時,tm_isdst為0,不了解情況時,tm_isdst為負*/

  • };

  • #define_TM_DEFINED

  • #endif

  • ANSIC標准稱使用tm結構的這種時間表示為分解時間(broken-downtime)。
    使用gmtime()和localtime()可將time_t時間類型轉換為tm結構體;
    使用mktime()將tm結構體轉換為time_t時間類型;
    使用asctime()將structtm轉換為字元串形式。

    1.3structtimeval時間類型
    timeval結構體在time.h中定義:

    [cpp]view plain

  • Structtmieval{

  • time_ttv_sec;/*秒s*/

  • suseconds_ttv_usec;/*微秒us*/

  • };

  • 設置時間函數settimeofday()與獲取時間函數gettimeofday()均使用該事件類型作為傳參。

    1.4structtimespec時間類型
    timespec結構體在time.h定義:

    [cpp]view plain

  • structtimespec{

  • time_ttv_sec;/*秒s*/

  • longtv_nsec;/*納秒ns*/

  • };


  • 2、Linux下常用時間函數
    Linux下常用時間函數有:time()、ctime()、gmtime()、localtime()、mktime()、asctime()、difftime()、gettimeofday()、settimeofday()

    2.1time()函數
    頭文件:#include<time.h>
    函數定義:time_ttime(time_t*timer)
    功能描述:該函數返回從1970年1月1日00時00分00秒至今所經過的秒數。如果time_t*timer非空指針,函數也會將返回值存到timer指針指向的內存。
    返回值:成功則返回秒數,失敗則返回((time_t)-1)值,錯誤原因存於errno中。
    例:

    [cpp]view plain

  • time_tseconds;

  • seconds=time((time_t*)NULL);


  • 2.2ctime()函數
    頭文件:#include<time.h>
    函數定義:char*ctime(consttime_t*timep);
    功能描述:ctime()將參數timep指向的time_t時間信息轉換成實際所使用的時間日期表示方法,並以字元串形式返回。字元串格式為:"WedJun2021:00:002012 "。
    例:

    [cpp]view plain

  • time_ttimep;

  • tmep=time(NULL);

  • printf("%s ",ctime(&timep));


  • 2.3gmtime()函數
    頭文件:#include<time.h>
    函數定義:structtm*gmtime(consttime_t*timep)
    功能描述:gmtime()將參數timep指向的time_t時間信息轉換成以tm結構體表示的GMT時間信息,並以structtm*指針返回。
    GMT:GMT是中央時區,北京在東8區,相差8個小時,所以北京時間=GMT時間+8小時。
    例:

    [cpp]view plain

  • intmain(void)

  • {

  • char*wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};

  • time_ttimep;

  • structtm*p_tm;

  • timep=time(NULL);

  • p_tm=gmtime(&timep);/*獲取GMT時間*/

  • printf("%d-%d-%d",(p_tm->tm_year+1900),(p_tm->mon+1),p_tm->tm_mday);

  • printf("%s%d:%d:%d ",wday[p_tm->tm_wday],p_tm->tm_hour,p_tm->tm_min,p_tm->tm_sec);

  • }


  • 2.4localtime()函數
    頭文件:#include<time.h>
    函數定義:structtm*localtime(consttime_t*timep);
    功能描述:localtime()將參數timep指向的time_t時間信息轉換成以tm結構體表示的本地時區時間(如北京時間=GMT+小時)。
    例:

    [cpp]view plain

  • intmain(void)

  • {

  • char*wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};

  • time_ttimep;

  • structtm*p_tm;

  • timep=time(NULL);

  • p_tm=localtime(&timep);/*獲取本地時區時間*/

  • printf("%d-%d-%d",(p_tm->tm_year+1900),(p_tm->mon+1),p_tm->tm_mday);

  • printf("%s%d:%d:%d ",wday[p_tm->tm_wday],p_tm->tm_hour,p_tm->tm_min,p_tm->tm_sec);

  • return0;

  • }


  • 2.5mktime()函數
    頭文件:#include<time.h>
    函數定義:time_tmktime(structtm*p_tm);
    功能描述:mktime()將參數p_tm指向的tm結構體數據轉換成從1970年1月1日00時00分00秒至今的GMT時間經過的秒數。
    例:

    [cpp]view plain

  • intmain(void)

  • {

  • time_ttimep:

  • structtm*p_tm;

  • timep=time(NULL);

  • pintf("time():%d ",timep);

  • p_tm=local(&timep);

  • timep=mktime(p_tm);

  • printf("time()->localtime()->mktime():%d ",timep);

  • return0;

  • }


  • 2.6asctime()函數
    頭文件:#include<time.h>
    函數定義:char*asctime(conststructtm*p_tm);
    功能描述:asctime()將參數p_tm指向的tm結構體數據轉換成實際使用的時間日期表示方法,並以字元串形式返回(與ctime函數相同)。字元串格式為:"WedJun2021:00:002012 "。
    例:

    [cpp]view plain

  • intmain(void)

  • {

  • time_ttimep;

  • timep=time(NULL);

  • printf("%s ",asctime(gmtime(&timep)));

  • return0;

  • }


  • 2.7difftime()函數
    頭文件:#include<time.h>
    函數定義:doubledifftime(time_ttimep1,time_ttimep2);
    功能描述:difftime()比較參數timep1和timep2時間是否相同,並返回之間相差秒數。
    例:

    [cpp]view plain

  • intmain(void)

  • {

  • time_ttimep1,timep2;

  • timep1=time(NULL);

  • sleep(2);

  • timep2=time(NULL);

  • printf("thedifferenceis%fseconds ",difftime(timep1,timep2));

  • return0;

  • }


  • 2.8gettimeofday()函數
    頭文件:#include<sys/time.h>
    #include<unistd.h>
    函數定義:intgettimeofday(structtimeval*tv,structtimezone*tz);
    功能描述:gettimeofday()把目前的時間信息存入tv指向的結構體,當地時區信息則放到tz指向的結構體。
    structtimezone原型:

    [cpp]view plain

  • structtimezone{

  • inttz_minuteswest;/*miniuteswestofGreenwich*/

  • inttz_dsttime;/*typeofDSTcorrection*/

  • };

  • 例:

    [cpp]view plain

  • structtimevaltv;

  • structtimevaltz;

  • gettimeofday(&tv,&tz);


  • 附:
    使用time函數族獲取時間並輸出指定格式字元串例子(strftime()函數):

    [cpp]view plain

  • intmain(void)

  • {

  • charstrtime[20]={0};

  • time_ttimep;

  • structtm*p_tm;

  • timep=time(NULL);

  • p_tm=localtime(&timep);

  • strftime(strtime,sizeof(strtime),"%Y-%m-%d%H:%M:%S",p_tm);

  • return0;

  • }


  • 2.9settimeofday()函數
    頭文件:#include<sys/time.h>
    #include<unistd.h>
    函數定義:intsettimeofday(conststructtimeval*tv,conststructtimezone*gz);
    功能描述:settimeofday()把當前時間設成由tv指向的結構體數據。當前地區信息則設成tz指向的結構體數據。
    例:

    [cpp]view plain

  • intmain(void)

  • {

  • chart_string[]="2012-04-2822:30:00";

  • structtmtime_tm;

  • structtimevaltime_tv;

  • time_ttimep;

  • intret=0;

  • sscanf(t_string,"%d-%d-%d%d:%d:%d",&time_tm.tm_year,&time_tm.tm_mon,&time_tm.tm_mday,&time_tm.tm_hour,&time_tm.tm_min,&time_tm.tm_sec);

  • time_tm.tm_year-=1900;

  • time_tm.tm_mon-=1;

  • time_tm.tm_wday=0;

  • time_tm.tm_yday=0;

  • time_tm.tm_isdst=0;

  • timep=mktime(&time_tm);

  • time_tv.tv_sec=timep;

  • time_tv.tv_usec=0;

  • ret=settimeofday(&time_tv,NULL);

  • if(ret!=0)

  • {

  • fprintf(stderr,"settimeofdayfailed ");

  • return-1;

  • }

  • return0;

  • }



Ⅲ linux shell 自定義加法函數 急求

$?是返回最近一條命令的返回值,echo $total,$?的意思是返回echo $total的返回值,這里肯定是成功返回,自然是0了,如果需要fSum返回值,那麼需要在fSum命令後直接$?即可.

subShellInfo=$(fSum 3 2)
total=$?
echo $total,$?
那麼就顯示5 0

其中subShellInfo是子進程中所有輸出信息,第一個$?是子進程返回值

Ⅳ linux如何添加自己的系統函數

你這個不叫系統函數,系統函數是操作系統內核提供給應用程序調用的介面。
你這個就是個應用程序,自己寫個程序hello.c如下:
#include <stdio.h>

void main()
{
printf("Hello world!\n");
}
然後再用gcc編譯成可執行程序:
gcc -o hello hello.c
這時候在當前目錄下就會生成一個叫hello的可執行程序,輸入./hello之後就會列印出Hello world!了。如果你不想輸入目錄的話,你也可以把這個hello可執行程序所在的目錄加入到path環境變數中就可以了。

Ⅳ linux 腳本怎麼定義子shell能用的函數

看如下示例,可以實現把函數傳遞到子shell中,子shell在linux腳本中使用()實現,即在()中的代碼會在子shell中執行,代碼如下:

#!/bin/bash
#Scriptname:do_square
functionsquare{
localsq#sqislocaltothefunction
let"sq=$1*$1"
echo"Numbertobesquaredis$1."
echo"Theresultis$sq"
}
echo"Givemeanumbertosquare."
readnumber
value_returned=$(square$number)#子shell
echo"$value_returned"

執行效果如下:

Ⅵ 如何查找Linux的函數定義的位置

滑鼠游標停留在函數處,利用快捷鍵F12 函數名字放到搜索欄,進行搜索,從搜索的結果中找到定義處

Ⅶ Linux 下如何快速查找到頭文件和函數定義

如:grep 「time_t」 /usr/include/*.h |grep 「typedef」可以查找到「typedef_time_t time_t;」
Locatekeyword.h 可以查找名為keyword 的頭文件所在地目錄樹

使用linux系統難免會忘記文件所在的位置,可以使用以下命令對系統中的文件進行搜索。搜索文件的命令為」find「;」locate「;」whereis「;」which「;」type「
linux下最強大的搜索命令為」find「。它的格式為」find <指定目錄> <指定條件> <指定動作>「;比如使用find命令搜索在根目錄下的所有interfaces文件所在位置,命令格式為」find / -name 'interfaces'「
使用locate搜索linux系統中的文件,它比find命令快。因為它查詢的是資料庫(/var/lib/locatedb),資料庫包含本地所有的文件信息。使用locate命令在根目錄下搜索interfaces文件的命令為」locate interfaces「
使用」whereis「命令可以搜索linux系統中的所有可執行文件即二進制文件。使用whereis命令搜索grep二進制文件的命令為」whereis grep「。
使用which命令查看系統命令是否存在,並返回系統命令所在的位置。使用which命令查看grep命令是否存在以及存在的目錄的命令為」which grep「
使用type命令查看系統中的某個命令是否為系統自帶的命令。使用type命令查看cd命令是否為系統自帶的命令;查看grep 是否為系統自帶的命令。

Ⅷ linux 如何自定義命令函數

你是想問在shell(比如說bash)下如何定義一個函數cuts嗎?

如果是bash,那麼就直接在shell 下輸入以下內容

function cuts () {
echo "Hello world"
}

然後就可以在當前終端下調用cuts了,比如
$ cuts
Hello world

如果你是想在某個腳本中調用函數cuts,那麼只要把上面那段代碼加入腳本中,也就可以用了,比如

#!/bin/bash

function cuts ()
{
echo "Hello world"
}

....
cuts
....

Ⅸ linux 內核 函數

像這樣全部大寫的一般應該是個宏定義。在mips_machine.h中:

/*
*Copyright(C)2008-2010GaborJuhos<[email protected]>
*
*Thisprogramisfreesoftware;youcanredistributeitand/ormodifyit
*
*bytheFreeSoftwareFoundation.
*
*/
#ifndef__ASM_MIPS_MACHINE_H
#define__ASM_MIPS_MACHINE_H
#include<linux/init.h>
#include<linux/stddef.h>
#include<asm/bootinfo.h>
structmips_machine{
unsignedlongmach_type;
constchar*mach_id;
constchar*mach_name;
void(*mach_setup)(void);
};
#defineMIPS_MACHINE(_type,_id,_name,_setup)
staticconstcharmachine_name_##_type[]__initconst
__aligned(1)=_name;
staticconstcharmachine_id_##_type[]__initconst
__aligned(1)=_id;
staticstructmips_machinemachine_##_type
__used__section(.mips.machines.init)=
{
.mach_type=_type,
.mach_id=machine_id_##_type,
.mach_name=machine_name_##_type,
.mach_setup=_setup,
};
externlong__mips_machines_start;
externlong__mips_machines_end;
#ifdefCONFIG_MIPS_MACHINE
intmips_machtype_setup(char*id)__init;
voidmips_machine_setup(void)__init;
#else
staticinlineintmips_machtype_setup(char*id){return1;}
staticinlinevoidmips_machine_setup(void){}
#endif/*CONFIG_MIPS_MACHINE*/
#endif/*__ASM_MIPS_MACHINE_H*/

Ⅹ linux下的函數聲明問題

函數聲明的作用在於告訴編譯器,在編譯到調用這個函數的語句的時候,檢查調用語句的參數個數、類型和順序是否正確,不正確給出提示

如果你的函數書寫在了調用語句之前,則由於編譯器在編譯到調用語句之前已經編譯過這個函數,認識它,於是這時候沒有聲明也可以。但如果你這個函數書寫在了調用語句之後,由於編譯器是從前往後編譯代碼的,所以就會出現不認識的情況,就會提示出錯。函數聲明之所以寫在代碼的最前面,也是這個道理,目的就是告訴編譯器,我後邊有個函數是某某樣子的,你得記著,它的實現代碼這時候你寫在哪兒就無所謂了。
你得情況可能就是,你先編譯了自定義函數所在的
cpp
,而後編譯的
主函數所在
cpp
,所以沒聲明也可以使用。

熱點內容
安卓系統總是被殺後台怎麼辦 發布:2024-10-09 07:11:31 瀏覽:304
花雨庭伺服器如何全屏 發布:2024-10-09 06:39:28 瀏覽:213
密碼查看器怎麼使用 發布:2024-10-09 06:38:55 瀏覽:495
sqlrownum 發布:2024-10-09 06:28:53 瀏覽:383
F模塊驅動器編譯錯誤 發布:2024-10-09 06:06:21 瀏覽:636
腳本亞索集錦 發布:2024-10-09 05:53:30 瀏覽:877
安卓手機格式化後為什麼打不開 發布:2024-10-09 05:52:58 瀏覽:511
雲伺服器可以超級計算機嗎 發布:2024-10-09 05:51:33 瀏覽:17
php基本語法手冊 發布:2024-10-09 05:34:04 瀏覽:819
shell腳本累加 發布:2024-10-09 05:33:41 瀏覽:843