1、概述 系统调用时用户空间程序访问内核的唯一方式,glibc(c库)除了实现标准c规范所需的库函数之外,还提供了一套封装例程,将系统调用封装后供用户编程使用。所以,系统调用也属于一种API。那么,用户空间程序......
2023-10-13 09:20 阅读 阅读全文一、介绍每个信号都要一串与之相关的打印说明,这些描述位于数组sys_siglist[]中,但是相较于直接引用sys_siglist而已推荐使用strsignal(),因为strsignal()会对边界检查,如果指向存在信号返回可打印信息,如果不存在的信号打印错误......
2023-10-10 01:13 阅读 阅读全文在linux纷繁复杂的内核代码中,sys_dup()的代码也许称得上是最简单的之一了,但是就是这么一个简单的系统调用,却成就了unix/linux系统最著名的一个特性:输入/输出重定向。 sys_dup()的主要工作就是用来“复制”一个打开的文件......
2023-10-13 07:17 阅读 阅读全文一、介绍getpwent(),setpwent(),endpwent() 组合起来使用按顺序扫描密码文件(/etc/passwd)中的所有的各项记录。#include <sys/types.h>#include <pwd.h>// 调用会自动打开密码文件,不需要执行open打开// 每次调用会按顺序读取各项,有点类......
2023-10-10 01:11 阅读 阅读全文一、接口介绍#include <unistd.h>ssize_t read(int fd, void *buf, size_t count);参数: fd: open 返回的文件描述符 buf: 读取存放数据 count:读取的数据大小ssize_t write(int fd, const void *buf, size_t count);参数: fd: ......
2023-10-10 01:11 阅读 阅读全文一、介绍由于很多系统调用函数调用出错的时候不仅仅是返回值判断还会设置errno全局共用的参数,所以这里总结errno各个参数的代表错误的含义,并且切记如果系统调用会改变errno变量,调用前要手动初始化 errno = 0, 包含的头文......
2023-10-10 01:11 阅读 阅读全文一、介绍getgrent(),setgrent(),endgrent() 组合起来使用按顺序扫描密码文件(/etc/group)中的所有的各项记录。#include <sys/types.h>#include <grp.h>// 调用会自动打开组文件,不需要执行open打开// 每次调用会按顺序读取各项,有点类似文......
2023-10-10 01:12 阅读 阅读全文《Linux系统调用:文件I/O篇》Linux/Unix 模型的显著特点之一是输入输出的通用性概念,这意味着使用4个同样的系统调用 open()、read()、write()、close() 可以对所有类型的文件执行I/O操作,包括终端之类的设备,因此,仅使用这些系统......
2023-10-10 02:29 阅读 阅读全文文章浏览阅读209次。八、系统调用应用程序--------------+vi/emacs/gftp/firefox || |标准库、第三方库 |C/C++/Qt/X11 || |系统调用<------------+brk/sbrk/mmap/munmap1.Linux系统内......
2023-11-13 14:23 阅读 阅读全文对于进程的一生可以用一些形象的比喻作一个小小的总结:随着一句fork,一个新进程呱呱落地,但它这时只是老进程的一个克隆。然后随着exec,新进程脱胎换骨,离家独立,开始了为人民服务的职业生涯。人 有生老病死,进......
2023-10-13 08:53 阅读 阅读全文