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

如何使用系统调用函数 open、close、read、write 等实现 cp 功能?

  •  
  •   MoTao · 2020-06-30 08:56:07 +08:00 · 2602 次点击
    这是一个创建于 1606 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 Ubuntu 系统中,如何使用系统调用函数 open 、close 、read 、write 等实现 cp 功能? 初学,希望各位解答下。

    19 条回复    2020-06-30 10:43:50 +08:00
    dandycheung
        1
    dandycheung  
       2020-06-30 09:03:09 +08:00 via iPhone
    直接去看 cp 命令的源代码吧
    zchlwj
        2
    zchlwj  
       2020-06-30 09:03:54 +08:00
    好像大作业来的
    momocraft
        3
    momocraft  
       2020-06-30 09:08:15 +08:00
    空手套作业?
    xdeng
        4
    xdeng  
       2020-06-30 09:09:51 +08:00
    这不是文件操作最基本的吗。
    putaozhenhaochi
        5
    putaozhenhaochi  
       2020-06-30 09:16:29 +08:00 via Android
    C ?
    BingoXuan
        6
    BingoXuan  
       2020-06-30 09:26:46 +08:00
    本质就是从用户态进入内核态

    参考: http://gityuan.com/2016/05/21/syscall/
    lululau
        7
    lululau  
       2020-06-30 09:28:35 +08:00
    看 APUE
    WordTian
        8
    WordTian  
       2020-06-30 09:29:10 +08:00 via Android
    用 open 打开两个文件,循环读写呗
    PTLin
        9
    PTLin  
       2020-06-30 09:37:22 +08:00
    好久没在 v2 看到这么简单的问题了。。。
    crclz
        10
    crclz  
       2020-06-30 09:46:53 +08:00
    拷贝文件夹怎么办啊?是不是得用 mkdir 函数?
    RikkaW
        11
    RikkaW  
       2020-06-30 09:50:01 +08:00 via Android
    问题里有个“等”,发出 sendfile 也是系统调用的声音,只要一行就好了(逃跑
    MoTao
        12
    MoTao  
    OP
       2020-06-30 10:00:44 +08:00
    我好像写出来了(→_→)
    ztyMCR
        13
    ztyMCR  
       2020-06-30 10:01:19 +08:00
    突然感觉自己还是大一新生
    fasionchan
        14
    fasionchan  
       2020-06-30 10:03:45 +08:00
    用 man 逐个看下系统调用文档就知道怎么用了:man open
    vk42
        15
    vk42  
       2020-06-30 10:07:44 +08:00
    这是来找作业答案来了?
    shawnsh
        16
    shawnsh  
       2020-06-30 10:07:46 +08:00
    linux 系统编程书上有写
    guonaihong
        17
    guonaihong  
       2020-06-30 10:12:24 +08:00
    不就是用 creat 创建目标文件,open 源文件,然后用 read 读源文件到 buffer 里面,然后用 write 把 buffer 数据写到目标文件里面,最后 close, close 。
    估计 8 行代码就搞定(只实现核心功能)。
    MoTao
        18
    MoTao  
    OP
       2020-06-30 10:17:42 +08:00
    @guonaihong 已搞定
    guonaihong
        19
    guonaihong  
       2020-06-30 10:43:50 +08:00
    @MoTao ok 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5265 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:05 · PVG 15:05 · LAX 23:05 · JFK 02:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.