V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BeiChuanAlex
V2EX  ›  C

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

  •  
  •   BeiChuanAlex · 2023-10-22 23:51:04 +08:00 · 3993 次点击
    这是一个创建于 429 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    47 条回复    2024-05-10 14:57:58 +08:00
    gpt5
        1
    gpt5  
       2023-10-23 00:07:00 +08:00   ❤️ 1
    BeiChuanAlex
        2
    BeiChuanAlex  
    OP
       2023-10-23 00:23:30 +08:00   ❤️ 1
    @gpt5 这个我要是能看懂,就不用学 c 了
    yolee599
        3
    yolee599  
       2023-10-23 01:03:42 +08:00 via Android
    那就 lwip 啊,单片机常用的网络库
    Hsinyao
        4
    Hsinyao  
       2023-10-23 01:19:36 +08:00 via iPhone
    dpdk/vpp/f-stack
    lsry
        5
    lsry  
       2023-10-23 01:53:27 +08:00
    redis 吧,我覺得可以看
    kakki
        6
    kakki  
       2023-10-23 02:03:58 +08:00 via Android
    redis ,和 nginx ,如果嫌代码多,可以把版本拉到最早期 0.0.1 那种。
    components
        7
    components  
       2023-10-23 02:31:54 +08:00   ❤️ 1
    Iamsonny
        8
    Iamsonny  
       2023-10-23 02:37:29 +08:00
    @gpt5 可以从 kernel v0.1 开始看,代码量不多。
    levelworm
        9
    levelworm  
       2023-10-23 04:15:35 +08:00 via Android
    @BeiChuanAlex 看大项目最早的版本。kernel 一开始没啥东西的。
    BeiChuanAlex
        10
    BeiChuanAlex  
    OP
       2023-10-23 05:45:58 +08:00
    @levelworm 看 kernel 感觉没信心啊,毕竟刚学 c 不久。。。
    hankai17
        11
    hankai17  
       2023-10-23 07:52:19 +08:00
    看起来只有 luajit 符合你的要求了
    另外推荐一个 luajit 相关的项目 https://github.com/hankai17/luajit2
    给 luajit 添加了 nogc bggc 功能
    Lemonadeccc
        12
    Lemonadeccc  
       2023-10-23 08:25:43 +08:00
    https://github.com/rtlabs-com/p-net
    小众行业的开源项目
    NealLason
        13
    NealLason  
       2023-10-23 08:29:34 +08:00
    FreeRTOS 、LWIP 、Lua ,代码量都不大
    dw2693734d
        14
    dw2693734d  
       2023-10-23 08:38:04 +08:00
    不用刻意学,实战项目练手+ChatGPT 就行了
    DiamondY
        15
    DiamondY  
       2023-10-23 08:45:46 +08:00
    uIP 吧,lwip 的简化版,lwip 对于初学者还是不算简单的
    推荐一些大项目和 luajit 的这种专业项目的,有点过了,哈哈
    BeiChuanAlex
        16
    BeiChuanAlex  
    OP
       2023-10-23 09:00:02 +08:00
    @dw2693734d 关键就是没有练手的项目。。。没有需求写不出来代码。。。
    heiher
        17
    heiher  
       2023-10-23 09:00:13 +08:00 via Android
    tun2socks 项目有兴趣不: https://github.com/heiher/hev-socks5-tunnel
    bruce0
        18
    bruce0  
       2023-10-23 09:02:12 +08:00
    redis 吧, 结合命令文档, 我感觉是挺好理解的
    BeiChuanAlex
        19
    BeiChuanAlex  
    OP
       2023-10-23 09:09:12 +08:00
    网上都说 redis 源码写的很好,不知道是不是真的,有看过的可以说一说。

    nginx 嘛,网上有个梗 《 void****》 我感觉以我对指针的了解程度,够呛能看懂。。。。

    其他的 lua 源码好像也还行,不过我个人对 lua 不是很感兴趣,剩下的项目太小众了,有看不懂估计也没啥人能问一下。
    morebrave
        20
    morebrave  
       2023-10-23 09:21:33 +08:00
    mongoose
    rahuahua
        21
    rahuahua  
       2023-10-23 09:58:35 +08:00
    redis 吧,nginx 源码复杂了而且对 http 等知识要求高
    chesha1
        22
    chesha1  
       2023-10-23 09:58:45 +08:00
    nevin47
        23
    nevin47  
       2023-10-23 09:59:15 +08:00
    @gpt5 这个恐怕要玩死 OP 哈哈哈,很多 C 语言写了十多年的人都不一定上来就看得懂内核在干啥
    huiwang520
        24
    huiwang520  
       2023-10-23 10:00:19 +08:00
    awesome-c 上面一大堆

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

    还有很多
    fortitudeZDY
        40
    fortitudeZDY  
       2023-10-23 12:41:04 +08:00
    可以考虑了解一下 fdio.vpp ,这个是一个完整的协议栈,有助于对于系统网络加强理解,tcp/ip 在这里有很完整的支持。
    Bown
        42
    Bown  
       2023-10-23 17:05:16 +08:00
    Neur2n
        43
    Neur2n  
       2023-10-24 21:18:11 +08:00
    BeiChuanAlex
        44
    BeiChuanAlex  
    OP
       2023-10-25 01:21:36 +08:00
    综合大家的建议,我决定去看 redis 的源码了。

    综合考虑吧:
    1.代码量尚可,看起来不太费劲。
    2.对找工作有帮助,我是后端。
    3.网上有很多看源码的心得和书籍,很多人已经整理了很多资料。
    4.还没想到。。。等看了再说吧。

    估计花个半年时间吧。。。估计会鸽。。。貌似是一个漫长的过程。。。。。。。
    alqaz
        45
    alqaz  
       2023-10-25 13:42:11 +08:00
    jiaxinbinggan
        46
    jiaxinbinggan  
       2023-12-18 01:31:14 +08:00
    xiaoke0718
        47
    xiaoke0718  
       229 天前
    可以写分析股票的基本面技术面比价系统?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5379 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 08:34 · PVG 16:34 · LAX 00:34 · JFK 03:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.