大家有没有值得推荐的 c 语言的开源项目,用来学习或者贡献的。

2023-10-22 23:51:04 +08:00
 BeiChuanAlex

最近在学 c ,希望找个 c 的开源项目看看,最好是网络 tcp/ip 相关的开源项目,其他的也可以,星星多点的,希望各位大佬推荐一下。

ps: 1.如果有点汇编也行,我也想再学学汇编 2.物联网相关的也行,单片机方向 3.nginx 就算了,一口吃不了个胖子,希望能有个总体的代码量少点的。

3981 次点击
所在节点    C
47 条回复
rahuahua
2023-10-23 09:58:35 +08:00
redis 吧,nginx 源码复杂了而且对 http 等知识要求高
chesha1
2023-10-23 09:58:45 +08:00
nevin47
2023-10-23 09:59:15 +08:00
@gpt5 这个恐怕要玩死 OP 哈哈哈,很多 C 语言写了十多年的人都不一定上来就看得懂内核在干啥
huiwang520
2023-10-23 10:00:19 +08:00
awesome-c 上面一大堆

自己是做数据库的,推荐一下 SQLite 和 Redis
rqzrqh
2023-10-23 10:05:05 +08:00
先看《 unix 系统编程》打好基础,不然很多概念以后都不懂的。
写个最简单的客户端访问服务端。单线程的。且了解超时是怎么处理的。
写一些多线程的程序。
熟悉一些网络编程模型。比如 leader-follower ,reactor 这种模型。
看 libuv 、libev 、libevent 这种,项目越简单越好。
最后是看和你工作相关的网络项目
timewarp
2023-10-23 10:05:50 +08:00
最好的就是 redis 了,没什么太多前置知识,就是个大号的哈希表,里面涉及了一堆好玩的数据结构之类的,推荐看一本书《 redis 设计与实现》
buffzty
2023-10-23 10:15:10 +08:00
《 TCP/IP 网络编程》此贴终结
ButcherHu
2023-10-23 10:18:34 +08:00
redis, 底层一点的就 dpdk
besto
2023-10-23 10:32:36 +08:00
你是看 C 又不是看业务,kernel 不是刚好么(又不是一口全看完,要看什么看什么)。。。而且都学汇编了,那就要先定体系架构,如果是 arm 都可以看看 atf 这类 code 了
janus77
2023-10-23 10:42:44 +08:00
lua 可以看看,评价都挺高
artnowben
2023-10-23 10:45:33 +08:00
推荐 dperf ,代码量 10K ,实现了一个小型的 TCP 协议栈,是性能非常高,非常流行的网络测试仪,9 月份还受邀参加 DPDK 峰会。
https://github.com/baidu/dperf
https://dperf.org/
scorpion91
2023-10-23 11:11:29 +08:00
shttpd-1.4.2 ,过时项目,但学习还行
3d22qCFSP087xAV8
2023-10-23 11:29:08 +08:00
TonyG
2023-10-23 11:39:14 +08:00
dayeye2006199
2023-10-23 11:53:14 +08:00
sqlite
mikewang
2023-10-23 12:05:17 +08:00
sakura6264
2023-10-23 12:24:50 +08:00
tcc tiny c compiler
echoechoin
2023-10-23 12:32:09 +08:00
以下都是 TCP / IP 相关的 C 语言项目:

入门:
tapip 自己写一个协议栈: https://github.com/chobits/tapip
libpcap 解析 pcap 文件

深入学习:
dpdk 网卡用户态驱动: https://github.com/DPDK/dpdk
生产环境会用到的的框架:
https://github.com/FDio/vpp
https://github.com/ntop/nDPI
https://github.com/OISF/suricata
https://github.com/F-Stack/f-stack
...
zzzkkk
2023-10-23 12:35:59 +08:00
看源码学 c 如大海捞针 浪费时间和大脑
不如看书
<c 陷阱与缺陷>
<c 专家编程>
<深入理解 linux 内核>
<apue>

还有很多
fortitudeZDY
2023-10-23 12:41:04 +08:00
可以考虑了解一下 fdio.vpp ,这个是一个完整的协议栈,有助于对于系统网络加强理解,tcp/ip 在这里有很完整的支持。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/984327

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX