文件操作
open
pathname:路径
flags:文件的打开方式
mode:文件的权限
返回值
打开成功返回值该文件的文件描述符,打开失败返回-1。
write
fd : 文件描述符
buf : 指向用于存储写入数据的缓冲区的指针
count : 写入字节的最大个数
返回值
写入成功返回实际写入的字节数,写入失败返回-1。
read
fd:文件描述符
buf : 指向用于存储读取数据的缓冲区的指针
count : 读取的最大字节数
返回值
读取成功:
读取成功返回实际读取的字节数
如果返回的是0,这意味着已经读取到文件的末尾。
文件的位置指针(也就是下一次读取或写入的位置)会根据读取的字节数向前移动。
如果实际读取的字节数少于请求的字节数,这不一定表示出错。例如,文件可能只剩下几个字节,或者数据可能正在从管道或终端流式传输,所以可能无法立即读取到请求的全部数据。此外,如果read()
函数在读取过程中被信号中断,也可能导致读取的字节数少于请求的字节数
读取失败
如果读取操作失败,read()
函数会返回-1,并且全局变量errno
会被设置为一个表示错误类型的值。这样,调用者可以检查errno
来确定出错的具体原因。
在出错的情况下,文件位置是否改变是不确定的。也就是说,文件的位置指针可能保持不变,也可能已经向前移动了一部分,这取决于操作系统和文件系统的具体实现
pipe
fildes : 存放管道文件描述符的数组,0下标是只读方式打开,1下标是只写方式打开。
返回值
创建成功返回0,失败返回-1。
mkfifo
pathname : 文件路径+文件名
mode : 文件权限
返回值
创建成功返回0,失败返回-1
snprintf
str : 指向要写入数据的字符数组的指针。(目标数组)
size : 写入的最大字节数。
format : 格式化字符串,用于指定输出格式。
... : 根据format
字符串的指定格式传入的参数列表。
返回值
共享内存接口
shmget
key : key是一个标识共享内存的一个标识符,具有唯一性,可以用shmtok接口生成
size:创建的共享内存的大小,一般操作系统是以4KB(一个页的大小)进行分配的,假设申请了4097字节的内存操作系统还是会分配2*4KB,但实际上可用的大小还是4097字节,其他空间就浪费了。
shmflg:打开方式的选项,有IPC_CREAT,IPC_EXCL等等。
IPC_CREAT:用于创建一个新的共享内存段,如果这个内存段不存在则创建,返回shmid;如果这个内存段已经存在就返回这个内存段对应的shmid
IPC_CREAT和IPC_EXCL一起使用:创建一个新的内存段,如果如果这个内存段不存在则创建,返回shmid,如果内存段已经存在则直接返回错误信息。
返回值:shmid
ftok
通过输入一个文件名(可以随意字符串)和一个任意的数字,生成一个key值并返回
shmat
shmid:指定共享内存
shmaddr:指定共享内存在虚拟地址空间的位置,为nullptr的话则是操作系统指定一般设置为空。
shmflg: 挂接的方式,0的话是默认以读写方式挂接
shmdt
shmaddr: 共享内存的地址
进程等待
waitpid和wait
pid : 子进程的pid
status : 输出型参数,返回状态码
options : 0是阻塞等待
返回值
时间函数
sleep
命令行的使用
sleep 5 表示暂停5秒 ; sleep 1m表示暂停一分钟 ; sleep 1h表示暂停一小时 ;sleep 1d表示暂停一天
语言编程中
sleep(秒数)
sleep(5)表示暂停5秒 ; sleep(60)表示暂停60秒
有关进程的函数
fork
作用:创建子进程
使用fork函数会创建子进程,会获得两个返回值,父进程返回子进程的pid,子进程返回0,创建失败返回-1,可以用perror获取创建失败的原因
getpid和getppid
作用:getpid获取子进程的pid,getppid获取父进程的pid