本文出自<svtter.github.io>
系统调用函数说明、参数值及定义
本文摘自老师的资料= =
使用这些函数的时候记得将头文件unistd.h包含到程序中
1、fork() 创建一个新进程
int fork()
其中返回int取值意义如下:
0:创建子进程,从子进程返回的id值大于0:从父进程返回的子进程id值 -1:创建失败
2、lockf(files,function,size): 用作锁定文件的某些段或者整个文件,本函数适用的头文件为:
#include<unistd.h>
参数定义:
int lockf(files,function,size)
int files,function;
long size;
其中:files是文件描述符:function是锁定和解锁;1表示锁定,0表示解锁。size是锁定和解锁的字节数,若用0,表示从文件的当前位置到文件尾。
3、msgget(key,flag): 获得一个消息的描述符,该描述符指定一个消息队列以便用于其他系统调用。
该函数使用偷文件如下:
#include<sy/types.h>
#include<sy/ipc.h>
#include<sy/msg.h>
参数定义
int msgget(key,flag)
key_tkey;
int flag;
语法格式:msgqid=msgget(key,flag)
其中:msgid是该系统调用返回的描述符,失败则返回-1;flag 本身由操作允许权和控制命令值相或得到。
如:
IP_CREAT|0400 是否该队列应被创建;
IP_EXCL |0400 是否该队列的创建应是互斥的;等。
msgsnd(id,msgp,size,flag): 发送一消息。
该函数是用头文件如下:
#include<sy/types.h>
#include<sy/ipc.h>
#include<sy/msg.h>
参数定义
int msgnd(id,msgp,size,flag)
int id,size,flag;
struct msgbuf * msgp;
其中:id是返回消息队列的描述符;msgp是指向用户存储区的一个构造体指针,size指示由msgp
指向的数据结构中字符数组的长度;即消息的长度。这个数组的最大值由MSG-MAX系统可调用参数来确
定。flag规定当核心用尽内部缓冲空间时应执行的动作;若在标志flag中末设置IPC_NOWAIT位,则当
41该消息队列中字节数超过一最大值时,或系统范围的消息数超过某一最大值时,调用msgsnd进程睡眠。
若是设置IPC_NOWAIT,则在此情况下,msgsnd立即返回。
msgrcv(id,msgp,size,type,flag): 接受一消息。
该函数调用使用头文件如下:
#include<sy/types.h>
#include<sy/ipc.h>
#include<sy/msg.h>
[阅读全文]