news 2026/5/26 9:35:04

MIT 6.1810:xv6 book Chapter 1:Operating system interfaces 笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MIT 6.1810:xv6 book Chapter 1:Operating system interfaces 笔记

System Call

int fork()
描述:为调用它的进程的内存创建完全一样的副本
返回:(原进程)新进程的PID;(新进程)返回0
int exit(int status)
描述:使调用它的进程停止执行,并释放资源,如内存和打开的文件
传入:int状态参数:0(成功)/1(失败)
int wait(int* status)
返回:当前进程的已退出(终止)的子进程的PID;若当前进程没有子进程,立刻返回-1
描述:将子进程的退出状态赋值给传入wait的地址;如果没有已退出的子进程,则wait等待。如果当前进程没有子进程,wait立刻返回-1.如果当前进程不在意子进程的退出状态,可以给wait传入地址0

intpid=fork();if(pid>0){printf("parent: child=%d\n",pid);pid=wait((int*)0);printf("child %d is done\n",pid);}elseif(pid==0){printf("child: exiting\n");exit(0);}else{printf("fork error\n");

int exec(char* file, char* argv[])
传入:两个参数:含可执行文件的文件名,字符串参数组

char*argv[3];argv[0]="echo";argv[1]="hello";argv[2]=0;exec("/bin/echo",argv);printf("exec error\n");

char* sbrk(int n)
描述:将数据内存扩大n个零字节
返回:新内存的位置

文件描述符:0(标准输入),1(标准输出),2(标准报错)

int read(int fd, char* buf, int n)
描述:从文件描述符fd中读取读取至多n字节,复制进buf
返回:读取的字节数
int write(int fd, char* buf, int n)
描述:从buf中写入n字节进文件描述符fd。只有在错误发生时才会写入小于n个字节。
返回:写入的字节数

charbuf[512];intn;for(;;){n=read(0,buf,sizeofbuf);if(n==0)break;if(n<0){fprintf(2,"read error\n");exit(1);}if(write(1,buf,n)!=n){fprintf(2,"write error\n");exit(1);}}

int open(char* file, int flags)
传入:第一个参数为文件名,第二个参数由一组标志组成,包括:O_RDONLY(只读)/ O_WRONLY(只写)/ O_RDWR(读写)/ O_CREATE(不存在则创建)/ O_TRUNC(截短文件至长度为0)

char*argv[2];argv[0]="cat";argv[1]=0;if(fork()==0){close(0);open("input.txt",O_RDONLY);exec("cat",argv);}

int dup(int fd)
描述:复制一个已经存在的文件描述符
返回:一个新的文件描述符指向同一个底层I/O对象

fd=dup(1);write(1,"hello ",6);write(fd,"world\n",6);//写入hello world\n

int pipe(int p[])
描述:创建一个新管道,将读和写的文件描述符记录在数组p内

intp[2];char*argv[2];argv[0]="wc";argv[1]=0;pipe(p);if(fork()==0){close(0);dup(p[0]);close(p[0]);close(p[1]);exec("/bin/wc",argv);}else{close(p[0]);write(p[1],"hello world\n",12);close(p[1]);}

int mknod(char* file, int, int)
描述:创建一个特殊的指向设备的文件
传入:后两个参数是主设备号和次设备号
int fstat(int fd, struct stat* st)
描述:从文件描述符指向的inode(文件名和文件本身共同的底层文件)获取信息,填充至struct stat中
int link(char* file1, char* file2)
描述:创建另一个文件系统名指向与当前文件相同的inode
int unlink(char* file)
描述:从文件系统中移除一个名字

open("a",O_CREATE|O_WRONLY);link("a","b");//从a读写相当于从b读写unlink("a");//inode和文件内容可通过b访问
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 9:33:52

在线金山excel文档存在bug,撤回功能不完善,导致有些内容误删后无法恢复,建议修复这个功能。——且链接不会自动同步,需要点击链接才能进入编辑文档状态。

在线金山excel文档存在bug&#xff0c;撤回功能不完善&#xff0c;导致有些内容误删后无法恢复&#xff0c;建议修复这个功能。——且链接不会自动同步&#xff0c;需要点击链接才能进入编辑文档状态。非常感谢您反馈金山Excel在线文档关于撤回功能及链接同步的问题&#xff0c…

作者头像 李华
网站建设 2026/5/26 9:33:06

Unity微信小游戏实战:独立开发者上线全流程与性能优化

1. 这不是Unity常规开发&#xff0c;而是一场“平台适配攻坚战”如果你在Unity里做过PC端、移动端甚至WebGL项目&#xff0c;但第一次点开微信开发者工具看到“小游戏”三个字时&#xff0c;大概率会愣一下——那个熟悉的Unity Editor左下角的Build Settings里&#xff0c;“We…

作者头像 李华
网站建设 2026/5/26 9:32:55

Hakira数据探索平台:从日志分析到安全取证的实战指南

1. 项目概述&#xff1a;初识Hakira最近在和一些做数据分析和安全研究的朋友交流时&#xff0c;好几次听到他们提起“Hakira”这个名字。起初我以为这又是一个昙花一现的新工具&#xff0c;但深入了解后才发现&#xff0c;它已经悄然成为许多技术团队工具箱里的“瑞士军刀”。简…

作者头像 李华
网站建设 2026/5/26 9:29:55

如何在Windows 11 LTSC 24H2中快速添加微软应用商店的完整解决方案

如何在Windows 11 LTSC 24H2中快速添加微软应用商店的完整解决方案 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore Windows 11 LTSC 24H2作为企业级操…

作者头像 李华
网站建设 2026/5/26 9:28:05

3步解锁MusicFree插件:打造你的专属音乐宇宙

3步解锁MusicFree插件&#xff1a;打造你的专属音乐宇宙 【免费下载链接】MusicFreePlugins MusicFree播放插件 项目地址: https://gitcode.com/gh_mirrors/mu/MusicFreePlugins 还在为音乐平台会员费烦恼&#xff1f;MusicFree插件让你一次聚合全网免费音乐资源&#x…

作者头像 李华
网站建设 2026/5/26 9:27:36

3分钟快速上手:Switch大气层系统安装终极指南

3分钟快速上手&#xff1a;Switch大气层系统安装终极指南 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 想要为你的Nintendo Switch解锁无限可能吗&#xff1f;大气层&#xff08;Atmosph…

作者头像 李华