close系统调用

日志

type=SYSCALL msg=audit(1714980638.367:4664): arch=c000003e syscall=3 success=yes exit=0 a0=7 a1=555fd3ee57c7 a2=7fff2a116780 a3=555fd3ee57c7 
items=0 ppid=1 pid=924 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="sshd" exe="/usr/sbin/sshd"
subj=unconfined key="my_syscall_watch"ARCH=x86_64 SYSCALL=close AUID="unset" UID="root" GID="root" EUID="root" SUID="root" FSUID="root" EGID="root" SGID="root" FSGID="root" type=PROCTITLE msg=audit(1714980638.367:4664): proctitle=2F7573722F7362696E2F73736864002D44

主要涉及参数a0=7 表示关闭的文件描述符

即进程关闭了文件描述符7

 主要操作:

1. 查看进程相关的FDs状态,删除此文件描述符

2. 关闭此连接,如果此文件描述符是只读,创建 进程use文件 边

3. 否则创建,进程 Generated 文件边

系统调用原型

在 C 语言中,`close` 系统调用用于关闭一个打开的文件描述符。它的原型定义在 `<unistd.h>` 头文件中,通常的原型如下:

#include <unistd.h>
int close(int fd);

其中:
- `fd` 是待关闭的文件描述符。
- 函数返回值是一个整数,通常为 0 表示成功关闭,-1 表示关闭失败,同时会设置全局变量 `errno` 表示具体的错误原因。

这个函数通过传递文件描述符来关闭与之关联的文件、管道、套接字等资源。调用 `close` 后,相关资源会被释放,并且文件描述符不再有效。

posted @ 2024-05-06 23:13  zzl14  阅读(50)  评论(0)    收藏  举报