`
isiqi
  • 浏览: 15950110 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

系统调用函数说明、参数值及定义

阅读更多

系统调用函数说明、参数值及定义

1、fork()

创建一个新进程

intfork()

其中返回int取值意义如下:

0:创建子进程,从子进程返回的id值

大于0:从父进程返回的子进程id值

-1:创建失败

2、lockf(files,function,size):

用作锁定文件的某些段或者整个文件,本函数适用的头文件为:

#include<unistd.h>

参数定义:

intlockf(files,function,size)

intfiles,function;

longsize;

其中:files是文件描述符:function是锁定和解锁;1表示锁定,0表示解锁。size是锁定和解锁的字节数,若用0,表示从文件的当前位置到文件尾。

3、msgget(key,flag):

获得一个消息的描述符,该描述符指定一个消息队列以便用于其他系统调用。

该函数使用偷文件如下:

#include<sy/types.h>

#include<sy/ipc.h>

#include<sy/msg.h>

参数定义

intmsgget(key,flag)

key_tkey;

intflag;

语法格式:msgqid=msgget(key,flag)

其中:msgid是该系统调用返回的描述符,失败则返回-1;flag本身由操作允许权和控制命令值相“或”得到。

如:IP_CREAT|0400是否该队列应被创建;

IP_EXCL|0400是否该队列的创建应是互斥的;等。

4、msgsnd(id,msgp,size,flag):

发送一消息。

该函数是用头文件如下:

#include<sy/types.h>

#include<sy/ipc.h>

#include<sy/msg.h>

参数定义

intmsgnd(id,msgp,size,flag)

intid,size,flag;

structmsgbuf*msgp;

其中:id是返回消息队列的描述符;msgp是指向用户存储区的一个构造体指针,size指示由msgp指向的数据结构中字符数组的长度;即消息的长度。这个数组的最大值由MSG-MAX系统可调用参数来确定。flag规定当核心用尽内部缓冲空间时应执行的动作;若在标志flag中末设置IPC_NOWAIT位,则当该消息队列中字节数超过一最大值时,或系统范围的消息数超过某一最大值时,调用msgsnd进程睡眠。若是设置IPC_NOWAIT,则在此情况下,msgsnd立即返回。

5、msgrcv(id,msgp,size,type,flag):

接受一消息。

该函数调用使用头文件如下:

#include<sy/types.h>

#include<sy/ipc.h>

#include<sy/msg.h>

参数定义

intmsgrcv(id,msgp,size,type,flag)

intid,size,type,flag;

structmsgbuf*msgq;

structsgbuf{longmtpe;chatmtext[];};

语法格式:

count=msgrcv(id,msgp,size,type,flag)

其中:id是用来存放欲接收消息的拥护数据结构的地址;size是msgp中数据数组的大小;type是用户要读的消息类型:

type为0:接收该队列的第一个消息;

type为正:接收类型type的第一个消息;

type为负:接收小于或等于type绝对值的最低类型的第一个消息。

flag规定倘若该队列无消息,核心应当做什么事,如果此时设置了IPC_NOWAIT标志,则立即返回,若在flag中设置了MSG_NOERROR,且所接收的消息大小大于size,核心截断所接受的消息。

count是返回消息正文的字节数。

6、msgctl(id,cmd,buf):

查询一个消息描述符的状态,设置它的状态及删除一个消息描述符。

调用该函数使用头文件如下:

#include<sy/types.h>

#include<sy/ipc.h>

#include<sy/msg.h>

参数定义

intmsgctl(id,cmd,buf)

intid,cmd;

structmsgbuf*msgq;

structmsqid_ds*buf;

其中:函数调用成功时返回0,调用不成功时返回-1。id用来识别该消息的描述符;cmd规定命令的类型。

IPC_START将与id相关联的消息队列首标读入buf。

IPC_SET为这个消息序列设置有效的用户和小组标识及操作允许权和字节的数量。

IPC_RMID删除id的消息队列。

buf是含有控制参数或查询结果的用户数据结构的地址。

附:msgid_ds结构定义如下:

structmsgid_ds

{structipc_permmsg_perm;/*许可权结构*/

shotpadl[7];/*由系统使用*/

ushortonsg_qnum; /*队列上消息数*/

ushortmsg_qbytes; /*队列上最大字节数*/

ushortmsg_lspid; /*最后发送消息的PID*/

ushortmsg_lrpid; /*最后接收消息的PID*/

time_tmsg__stime; /*最后发送消息的时间*/

time_tmsg_rtime; /*最后接收消息的时间*/

me_tmsg_ctime; /*最后更改时间*/

}

structipc_perm

{ushortuid; /*当前用户id*/

ushortgid; /*当前进程组id*/

ushortcuid; /*创建用户id*/

ushortcgid /*创建进程组id*/

ushortmode; /*存取许可权*/

{shotpatl;longpad2} /*由系统使用*/

};

7、shmget(key,size,flag):

获得一个共享存储区。

该函数使用头文件如下:

#include<sy/types.h>

#include<sy/ipc.h>

#include<sy/shm.h>

语法格式:

shmid=shmaget(key,size,flag)

参数定义:

intshmaget(key,size,flag)

key_tkey;

intsize,flag;

其中:size是存储区的字节数,key和flag与系统调用msgget中的参数含义相同。

附:

操作允许权 八进制数

用户可读 00400

用户可读 00200

小组可读 00040

小组可读 00020

其他可读 00004

其他可读 00002

控制命令

IPC_CREAT 0001000

IPC_EXCL 0002000

如:shmid=shmget(key,size,(IPC_CREAT|0400));

创建一个关键字为key,长度为size的共享存储区。

8、shmat(id,addr,flag):

从逻辑上将一个共享存储区附接到进程的虚拟地址空间上。

该函数调用使用头文件如下:

#include<sy/types.h>

#include<sy/ipc.h>

#include<sy/msg.h>

参数定义:

char*shmat(id,addr,flag)

intid,flag;

char*addr;

语法格式:virtaddr=shmat(id,addr,flag)

其中:id是共享存储区的标识符,addr是用户要使用共享存储区附接的虚地址,若addr0,系统是否对应用户规定的地址做舍入操作。如果flag中设置了shm_rnd即表示操作系统在必要时舍去这个地址。如果设置了shm_rdonly,即表示只允许读操作。viraddr是附接的虚地址。

9、shmdt(addr):

把一个共享存储区从指定进程的虚地址空间分开。

调用该函数使用头文件:

#include<sy/types.h>

#include<sy/ipc.h>

#include<sy/mhm.h>

参数定义:

intshmdt(addr)

char*addr

其中,当调用成功时,返回0值,调用不成功,返回-1,addr是系统调用shmat所返回的地址。

10、shmctl(id,cmd,buf):

对与共享存储区关联的各种参数进行操作,从而对共享存储区进行控制。

调用该函数使用头文件:

#include<sy/types.h>

#include<sy/ipc.h>

#include<sy/shm.h>

参数定义:

intshmctl(id,cmd,buf)

intid,cmd;

structshmid_ds*buf;

其中:调用成功返回0,否则返回-1。id为被共享存储区的标识符。cmd规定操作的类型。规定如下:

IPC_STAT:返回包含在指定的shmid相关数据结构中的状态信息,并且把它放置在用户存储区中的*but指针所指的数据结构中。执行此命令的进程必须有读取允许权。

IPC_SET:对于指定的shmid,为它设置有效用户和小组标识和操作存取权。

IPC_RMID:删除指定的shmid以及与它相关的共享存储区的数据结构。

SHM_LOCK:在内存中锁定指定的共享存储区,必须是超级用户才可以进行此项操作。

Buf是一个用户级数据结构地址。

shmid_ds

{structipc_permshm_perm; /*允许权结构*/

intshm_segsz; /*段大小*/

intpadl; /*由系统使用;*/

ushortshm_lpid; /*最后操作的进程id;*/

ushortshm_cpid; /*创建者的进程id;*/

ushortshm_nattch; /*当前附界数;*/

shortpad2; /*由系统使用;*/

time_tshm_atime; /*最后附接时间*/

time_tshm_dtime; /*最后段接时间*/

time_tshm_ctime; /*最后修改时间*/

}

11、signal(sig,function):

允许调用进程控制软中断信号的处理。

头文件为:

#include<signal.h>

参数定义:

signal(sig,function);

intsig;

void(*func)();

其中:sig的值是:

SIGHVP 挂起

SIGINT 键盘按^c键或break键

SIGQUIT 键盘按quit键

SIGILL 非法指令

SIGIOT IOT指令

SIGEMT EMT指令

SIGFPE 浮点运算溢出

SIGKILL 要求终止进程

SIGBUS 总线错

SIGSEGV 段违例

SIGSYS 系统调用参数错

SIGPIPE 向无读者管道上写

SIGALRM 闹钟

SIGTERM 软件终结

SIGUSRI 用户定义信号

SIGUSR2 第二个用户定义信号

SIGCLD 子进程死

SIGPWR 电源故障

function的解释如下:

SIG_DEL:缺省操作。对除SIGPWR和SIGCLD外所有信号的缺省操作是进程终结对信号 SIGQUIT,SIGILL,SIGTRA,SIGIOT,SIGEMT,SIGFPE,SIGBUS,SIGSEGV和SIGSYS它产生一内存映像文件。

SIG_IGN:忽视该信号的出现。

Function:在该进程中的一个函数地址,在核心返回用户态时,它以软中断信号的序号作为参数调用该函数,对除了信号SIGILL,SIGTRAP和SIGTWR以外的信号,核心自动地重新设置软中断信号处理程序的值为SIG_DEL,一个进程不能捕获SIGKILL信号。

<!--EndFragment-->
分享到:
评论

相关推荐

    函数参数缺省与重载,命名和缺省规则

    经常看到函数定义时有好多参数,但实际调用时却只用到其中几个参数,研究老半天终于明白了

    对两个整数通过函数调用交换其值,然后输出

    对两个整数通过函数调用交换其值,然后输出。首先定义一个函数,3个值交换。在主函数函数声明(可省略),调用函数,输入要交换的两个值

    Python程序设计:函数参数.pptx

    我们将从本任务出发,较为系统的学习Python中函数的定义、调用、函数的形参定义、函数的参数传递以及匿名函数和生成器函数等内容,并掌握相关的配套案例。 任务 IQ智商测试 任务知识点 函数定于与调用 函数参数 匿名...

    函数的定义和调用

    通常情况下,函数包括返回值类型、函数名、参数列表和函数体4个部分。其中,返回值类型、函数名和参数列表构成了一个函数原型,而函数体表示函数的实现。

    Python程序设计:函数定义与调用.pptx

    我们将从本任务出发,较为系统的学习Python中函数的定义、调用、函数的形参定义、函数的参数传递以及匿名函数和生成器函数等内容,并掌握相关的配套案例。 任务 IQ智商测试 任务知识点 函数定义与调用 函数参数 匿名...

    C语言函数的定义、声明以及函数的调用方法_c语言函数学习实例_

    1.掌握C语言函数的定义、声明以及函数的调用方法2.了解主调函数和被调函数之间的参数传递方式3.熟练掌握数组作为函数参数的用法

    Python语言基础:函数的参数.pptx

    对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值,而无需了解函数的具体逻辑。 在Python中,函数的参数有四种: 必需参数 关键字参数 默认参数 不定长参数 必需参数是在函数调用时,...

    PHP语言函数的定义和调用.docx

    在上面的代码中,functionName是函数的名称,$value1和$value2是函数的参数的具体值,调用函数后,将返回值赋给$result变量。 通过以上方式,可以在PHP中定义和调用函数,实现代码的模块化和重用。

    shell自定义函数及参数调用解析

    二、调用函数 只需要使用函数名,即可调用某个函数:$ fname ; #执行函数 可以传递参数给函数,并由脚本进行访问:fname arg1 arg2; # 传递参数 以下是函数fname的定义。在函数fname中,包含了各种访问函数参数的...

    C++程序设计教程函数的定义与调用

    函数的定义与调用 7.2 函数的嵌套调用与递归调用 7.3 数组作为函数参数 7.4 内部变量与外部变量 7.5 内部函数与外部函数 7.6 变量的动态存储与静态存储

    实验五Linux系统调用的编程技术

    libc 函数库定义的一些 API 内部使用了系统调用的封装例程,其主要目的是发布系统调用,使程序员在写代码时不需要用汇编指令和寄存器传递参数来触发系统调用。一般每个系统调用对应一个系统调用的封装例程,函数库...

    python下函数参数的传递(参数带星号的说明)

    在调用函数的过程中参数是如何被解析先看第一个问题,在python中函数参数的定义主要有四种方式: 1.F(arg1,arg2,…) 这 是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的...

    python 函数的使用-python基础,python函数的使用说明,有python2的参考代码

    这些参数就像变量一样,只不过它们的值是在调用函数的时候定义的,而非函数本身内赋值; 参数在函数定义的圆括号对内指定,用逗号分割; 调用函数时,以同样的方式提供参数值; 形参:函数中的参数名称 实参:函数...

    构造函数与析构函数

    其中,构造函数在定义对象时被调用,析构函数在对象释放时被调用。如果用户没有提供构造函数和析构函数,系统将提供默认的构造函数和析构函数。 1.构造函数 构造函数是一个与类同名的方法,可以没有参数,有一个参数...

    PHP函数 -函数的高级用法.ppt

    此处需注意,在调用函数时,引用函数返回值需要在函数名前添加&符号,用来说明返回的是一个引用。 三、函数的嵌套调用 PHP语言允许在函数定义中出现函数调用,从而形成函数的嵌套调用。 四、函数的递归调用 在函数的...

    python中的以简单例子解释函数参数、函数定义、函数返回值、函数调用

    python-函数1....4.return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的 return 相当于返回 None。注意:return只能在函数中使用,注意缩进。 3.语法 def functionname( parameters ):

    Python中函数及默认参数的定义与调用操作实例分析

    本文实例讲述了Python中函数及默认参数的定义与调用操作。分享给大家供大家参考,具体如下: #coding=utf8 ''''' Python中的函数使用小括号调用。函数在调用之前必须先定义。 如果函数中没有return语句,就会自动...

    JavaScript程序设计课件:函数的参数.pptx

    函数定义时圆括号里的参数称为形式参数,调用函数时传递的参数称为实际参数。 5.2.3 函数的参数 2、参数设置 无参函数:适用于不需要提供任何数据,即可完成指定功能的情况。 function greet() { console.log('Hello...

    C/C++定义可变参数函数,演示程序

    C/C++定义可变参数函数,演示程序,教你怎么写一个参数可变的函数

    JavaScript程序设计课件:函数的调用方式.pptx

    当函数定义完成后,要想在程序中发挥函数的作用,必须得调用这个函数。 函数的调用非常简单,只需引用函数名,并传入相应的参数即可。 函数声明与调用的编写顺序不分前后。 5.2.2 函数的调用方式 2、函数的调用方式 ...

Global site tag (gtag.js) - Google Analytics