Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
uiuc-cs241-notes-zh
提交
bc272361
U
uiuc-cs241-notes-zh
项目概览
OpenDocCN
/
uiuc-cs241-notes-zh
9 个月 前同步成功
通知
6
Star
46
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uiuc-cs241-notes-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
bc272361
编写于
7月 14, 2019
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2019-07-14 12:49:13
上级
3902da8f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
70 addition
and
70 deletion
+70
-70
SUMMARY.md
SUMMARY.md
+62
-62
docs/8.md
docs/8.md
+8
-8
未找到文件。
SUMMARY.md
浏览文件 @
bc272361
+
[
UIUC CS241 系统编程中文讲义
](
README.md
)
+
[
0\. 简介
](
docs/1.md
)
+
[
#Informal词汇表
](
docs/3.md
)
+
[
#Informal
词汇表
](
docs/3.md
)
+
[
#Piazza:何时以及如何寻求帮助
](
docs/4.md
)
+
[
编程技巧,第
1
部分
](
docs/5.md
)
+
[
编程技巧,第
1
部分
](
docs/5.md
)
+
[
系统编程短篇小说和歌曲
](
docs/6.md
)
+
[
1.学习C
](
docs/7.md
)
+
[
C
编程,第1
部分:简介
](
docs/8.md
)
+
[
C
编程,第2
部分:文本输入和输出
](
docs/9.md
)
+
[
C
编程,第3
部分:常见问题
](
docs/10.md
)
+
[
C
编程,第4
部分:字符串和结构
](
docs/11.md
)
+
[
C
编程,第5
部分:调试
](
docs/12.md
)
+
[
C编程,复习题
](
docs/13.md
)
+
[
1.学习
C
](
docs/7.md
)
+
[
C
编程,第 1
部分:简介
](
docs/8.md
)
+
[
C
编程,第 2
部分:文本输入和输出
](
docs/9.md
)
+
[
C
编程,第 3
部分:常见问题
](
docs/10.md
)
+
[
C
编程,第 4
部分:字符串和结构
](
docs/11.md
)
+
[
C
编程,第 5
部分:调试
](
docs/12.md
)
+
[
C
编程,复习题
](
docs/13.md
)
+
[
2.进程
](
docs/14.md
)
+
[
进程,第
1
部分:简介
](
docs/15.md
)
+
[
分叉,第
1
部分:简介
](
docs/16.md
)
+
[
分叉,第
2
部分:Fork,Exec,等等
](
docs/17.md
)
+
[
进程控制,第
1
部分:使用信号等待宏
](
docs/18.md
)
+
[
进程,第
1
部分:简介
](
docs/15.md
)
+
[
分叉,第
1
部分:简介
](
docs/16.md
)
+
[
分叉,第
2
部分:Fork,Exec,等等
](
docs/17.md
)
+
[
进程控制,第
1
部分:使用信号等待宏
](
docs/18.md
)
+
[
进程复习题
](
docs/19.md
)
+
[
3.内存和分配器
](
docs/20.md
)
+
[
内存,第
1
部分:堆内存简介
](
docs/21.md
)
+
[
内存,第
2
部分:实现内存分配器
](
docs/22.md
)
+
[
内存,第
3
部分:粉碎堆栈示例
](
docs/23.md
)
+
[
内存,第
1
部分:堆内存简介
](
docs/21.md
)
+
[
内存,第
2
部分:实现内存分配器
](
docs/22.md
)
+
[
内存,第
3
部分:粉碎堆栈示例
](
docs/23.md
)
+
[
内存复习题
](
docs/24.md
)
+
[
4.介绍Pthreads
](
docs/25.md
)
+
[
Pthreads,第
1
部分:简介
](
docs/26.md
)
+
[
Pthreads,第
2
部分:实践中的用法
](
docs/27.md
)
+
[
Pthreads,第
3
部分:并行问题(奖金)
](
docs/28.md
)
+
[
Pthread复习题
](
docs/29.md
)
+
[
4.介绍
Pthreads
](
docs/25.md
)
+
[
Pthreads,第
1
部分:简介
](
docs/26.md
)
+
[
Pthreads,第
2
部分:实践中的用法
](
docs/27.md
)
+
[
Pthreads,第
3
部分:并行问题(奖金)
](
docs/28.md
)
+
[
Pthread
复习题
](
docs/29.md
)
+
[
5.同步
](
docs/30.md
)
+
[
同步,第
1
部分:互斥锁
](
docs/31.md
)
+
[
同步,第
2
部分:计算信号量
](
docs/32.md
)
+
[
同步,第
3
部分:使用互斥锁和信号量
](
docs/33.md
)
+
[
同步,第
4
部分:临界区问题
](
docs/34.md
)
+
[
同步,第
5
部分:条件变量
](
docs/35.md
)
+
[
同步,第
6
部分:实现障碍
](
docs/36.md
)
+
[
同步,第
7
部分:读者编写器问题
](
docs/37.md
)
+
[
同步,第
8
部分:环形缓冲区示例
](
docs/38.md
)
+
[
同步,第
1
部分:互斥锁
](
docs/31.md
)
+
[
同步,第
2
部分:计算信号量
](
docs/32.md
)
+
[
同步,第
3
部分:使用互斥锁和信号量
](
docs/33.md
)
+
[
同步,第
4
部分:临界区问题
](
docs/34.md
)
+
[
同步,第
5
部分:条件变量
](
docs/35.md
)
+
[
同步,第
6
部分:实现障碍
](
docs/36.md
)
+
[
同步,第
7
部分:读者编写器问题
](
docs/37.md
)
+
[
同步,第
8
部分:环形缓冲区示例
](
docs/38.md
)
+
[
同步复习题
](
docs/39.md
)
+
[
6.死锁
](
docs/40.md
)
+
[
死锁,第
1
部分:资源分配图
](
docs/41.md
)
+
[
死锁,第
2
部分:死锁条件
](
docs/42.md
)
+
[
死锁,第
3
部分:餐饮哲学家
](
docs/43.md
)
+
[
死锁,第
1
部分:资源分配图
](
docs/41.md
)
+
[
死锁,第
2
部分:死锁条件
](
docs/42.md
)
+
[
死锁,第
3
部分:餐饮哲学家
](
docs/43.md
)
+
[
死锁复习题
](
docs/44.md
)
+
[
7.进程间通信&调度
](
docs/45.md
)
+
[
虚拟内存,第
1
部分:虚拟内存简介
](
docs/46.md
)
+
[
管道,第
1
部分:管道介绍
](
docs/47.md
)
+
[
管道,第
2
部分:管道编程秘密
](
docs/48.md
)
+
[
文件,第
1
部分:使用文件
](
docs/49.md
)
+
[
调度,第
1
部分:调度过程
](
docs/50.md
)
+
[
调度,第
2
部分:调度过程:算法
](
docs/51.md
)
+
[
IPC复习题
](
docs/52.md
)
+
[
虚拟内存,第
1
部分:虚拟内存简介
](
docs/46.md
)
+
[
管道,第
1
部分:管道介绍
](
docs/47.md
)
+
[
管道,第
2
部分:管道编程秘密
](
docs/48.md
)
+
[
文件,第
1
部分:使用文件
](
docs/49.md
)
+
[
调度,第
1
部分:调度过程
](
docs/50.md
)
+
[
调度,第
2
部分:调度过程:算法
](
docs/51.md
)
+
[
IPC
复习题
](
docs/52.md
)
+
[
8.网络
](
docs/53.md
)
+
[
POSIX,第
1
部分:错误处理
](
docs/54.md
)
+
[
网络,第
1
部分:简介
](
docs/55.md
)
+
[
网络,第
2部分:使用
getaddrinfo
](
docs/56.md
)
+
[
网络,第
3部分:构建一个简单的TCP
客户端
](
docs/57.md
)
+
[
网络,第
4部分:构建一个简单的TCP
服务器
](
docs/58.md
)
+
[
网络,第
5
部分:关闭端口,重用端口和其他技巧
](
docs/59.md
)
+
[
网络,第
6部分:创建UDP
服务器
](
docs/60.md
)
+
[
网络,第
7部分:非阻塞I O,select()和
epoll
](
docs/61.md
)
+
[
RPC,第
1
部分:远程过程调用简介
](
docs/62.md
)
+
[
POSIX,第
1
部分:错误处理
](
docs/54.md
)
+
[
网络,第
1
部分:简介
](
docs/55.md
)
+
[
网络,第
2 部分:使用
getaddrinfo
](
docs/56.md
)
+
[
网络,第
3 部分:构建一个简单的 TCP
客户端
](
docs/57.md
)
+
[
网络,第
4 部分:构建一个简单的 TCP
服务器
](
docs/58.md
)
+
[
网络,第
5
部分:关闭端口,重用端口和其他技巧
](
docs/59.md
)
+
[
网络,第
6 部分:创建 UDP
服务器
](
docs/60.md
)
+
[
网络,第
7 部分:非阻塞 I O,select()和
epoll
](
docs/61.md
)
+
[
RPC,第
1
部分:远程过程调用简介
](
docs/62.md
)
+
[
网络复习题
](
docs/63.md
)
+
[
9.文件系统
](
docs/64.md
)
+
[
文件系统,第
1
部分:简介
](
docs/65.md
)
+
[
文件系统,第
2部分:文件是
inode(其他一切只是数据...)
](
docs/66.md
)
+
[
文件系统,第
3
部分:权限
](
docs/67.md
)
+
[
文件系统,第
4
部分:使用目录
](
docs/68.md
)
+
[
文件系统,第
5
部分:虚拟文件系统
](
docs/69.md
)
+
[
文件系统,第
6
部分:内存映射文件和共享内存
](
docs/70.md
)
+
[
文件系统,第
7
部分:可扩展且可靠的文件系统
](
docs/71.md
)
+
[
文件系统,第
8部分:从Android
设备中删除预装的恶意软件
](
docs/72.md
)
+
[
文件系统,第
9
部分:磁盘块示例
](
docs/73.md
)
+
[
文件系统,第
1
部分:简介
](
docs/65.md
)
+
[
文件系统,第
2 部分:文件是
inode(其他一切只是数据...)
](
docs/66.md
)
+
[
文件系统,第
3
部分:权限
](
docs/67.md
)
+
[
文件系统,第
4
部分:使用目录
](
docs/68.md
)
+
[
文件系统,第
5
部分:虚拟文件系统
](
docs/69.md
)
+
[
文件系统,第
6
部分:内存映射文件和共享内存
](
docs/70.md
)
+
[
文件系统,第
7
部分:可扩展且可靠的文件系统
](
docs/71.md
)
+
[
文件系统,第
8 部分:从 Android
设备中删除预装的恶意软件
](
docs/72.md
)
+
[
文件系统,第
9
部分:磁盘块示例
](
docs/73.md
)
+
[
文件系统复习题
](
docs/74.md
)
+
[
10.信号
](
docs/75.md
)
+
[
过程控制,第
1
部分:使用信号等待宏
](
docs/76.md
)
+
[
信号,第
2
部分:待处理的信号和信号掩码
](
docs/77.md
)
+
[
信号,第
3
部分:提高信号
](
docs/78.md
)
+
[
信号,第
4
部分:信号
](
docs/79.md
)
+
[
过程控制,第
1
部分:使用信号等待宏
](
docs/76.md
)
+
[
信号,第
2
部分:待处理的信号和信号掩码
](
docs/77.md
)
+
[
信号,第
3
部分:提高信号
](
docs/78.md
)
+
[
信号,第
4
部分:信号
](
docs/79.md
)
+
[
信号复习题
](
docs/80.md
)
+
[
考试练习题
](
docs/81.md
)
+
[
考试主题
](
docs/82.md
)
+
[
C编程:复习题
](
docs/83.md
)
+
[
C
编程:复习题
](
docs/83.md
)
+
[
多线程编程:复习题
](
docs/84.md
)
+
[
同步概念:复习题
](
docs/85.md
)
+
[
记忆:复习题
](
docs/86.md
)
...
...
docs/8.md
浏览文件 @
bc272361
...
...
@@ -12,8 +12,8 @@
## 外部资源
*
[
在 Y 分钟中学习 X
](
https://learnxinyminutes.com/docs/c/
)
(强烈推荐浏览!)
*
[
面向C ++ / Java 程序员的 C
](
http://www.ccs.neu.edu/course/com3620/parent/C-for-Java-C++/c-for-c++-alt.html
)
*
[
Brian Kernighan
的
C 教程
](
http://www.lysator.liu.se/c/bwk-tutor.html
)
*
[
面向
C ++ / Java 程序员的 C
](
http://www.ccs.neu.edu/course/com3620/parent/C-for-Java-C++/c-for-c++-alt.html
)
*
[
Brian Kernighan
的
C 教程
](
http://www.lysator.liu.se/c/bwk-tutor.html
)
*
[
c faq
](
http://c-faq.com/
)
*
[
C 训练营
](
http://gribblelab.org/CBootCamp/index.html
)
*
[
C / C ++函数参考
](
http://www.cplusplus.com/reference/clibrary/
)
...
...
@@ -22,7 +22,7 @@
## C 速成教程介绍
__
新页面警告
__
请为我修复拼写错误和格式错误,并添加有用的链接。
*
__
新页面警告
__
请为我修复拼写错误和格式错误,并添加有用的链接。
*
### 你怎么用 C 写一个完整的 hello world 程序?
...
...
@@ -136,7 +136,7 @@ char *string = give_me_space;
gcc 和 clang 不符合 ISO-C 标准,这意味着它们可以让你对 void 指针进行算术运算。他们会将它视为 char 指针,但不要这样做,因为它可能不适用于所有编译器!
### `printf`调用 write 或write 调用`printf`?
### `printf`调用 write 或
write 调用`printf`?
`printf`
调用
`write`
。
`printf`
包含一个内部缓冲区,因此,为了提高性能
`printf`
每次调用
`printf`
时都不会调用
`write`
。
`printf`
是 C 库函数。
`write`
是系统调用,我们知道系统调用很昂贵。另一方面,
`printf`
使用的缓冲区在这一点上更适合我们的需求
...
...
@@ -315,7 +315,7 @@ void mystrcpy(char*dest, char* src) {
while
(
(
*
dest
++
=
*
src
++
))
{};
```
### 你怎么写 strdup的替换?
### 你怎么写 strdup
的替换?
```
c
// Use strlen+1 to find the zero byte...
...
...
@@ -328,7 +328,7 @@ char* mystrdup(char*source) {
### 你如何在堆上取消分配内存?
使用free!
使用
free!
```
c
int
*
n
=
(
int
*
)
malloc
(
sizeof
(
int
));
...
...
@@ -360,7 +360,7 @@ p = NULL; // Now you can't use this pointer by mistake
### 什么是缓冲区溢出的例子?
着名的例子:Heart Bleed(在一个大小不足的缓冲区中执行 memcpy)。简单的例子:在确定所需内存的大小时,实现 strcpy 并忘记添加一个strlen。
着名的例子:Heart Bleed(在一个大小不足的缓冲区中执行 memcpy)。简单的例子:在确定所需内存的大小时,实现 strcpy 并忘记添加一个
strlen。
### 什么是'typedef',你如何使用它?
...
...
@@ -390,6 +390,6 @@ comparator gt = greater_than;
这声明了一个函数类型比较器,它接受两个
`void*`
参数并返回一个 int。
### 哇 C好多啊
### 哇 C
好多啊
不要再担心了!
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录