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

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

  •  
  •   BeiChuanAlex · 121 天前 · 3073 次点击
    这是一个创建于 121 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    还有很多
    fortitudeZDY
        40
    fortitudeZDY  
       120 天前
    可以考虑了解一下 fdio.vpp ,这个是一个完整的协议栈,有助于对于系统网络加强理解,tcp/ip 在这里有很完整的支持。
    Bown
        42
    Bown  
       120 天前
    Neur2n
        43
    Neur2n  
       119 天前
    BeiChuanAlex
        44
    BeiChuanAlex  
    OP
       119 天前
    综合大家的建议,我决定去看 redis 的源码了。

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

    估计花个半年时间吧。。。估计会鸽。。。貌似是一个漫长的过程。。。。。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   921 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 21:13 · PVG 05:13 · LAX 13:13 · JFK 16:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.