博客
关于我
(实验2)文件IO实验
阅读量:397 次
发布时间:2019-03-05

本文共 3275 字,大约阅读时间需要 10 分钟。

??cp??????????mycp???

???

  • ???????????????test1.text???test2.txt? ?????[test@linux test]$ ./mycp /home/test1.txt /usr/test2.txt
  • ???????????????test1.txt???/tmp??? ?????[test@linux test]$ ./mycp /home/test1.txt /tmp ??????????????????????
  • ?????

    mycp???????????

  • ??????????????
  • ?????
  • ????????????
  • ????????????
  • ????
  • ??????

    ???????????????????????????????

    cp?????????????????

    • ????????cp /usr/local/src/main.c /root/main.c
    • ????????cp /usr/local/src/main.c /root
    • ????????cp ?r /usr/local/src /root ??????????sudo cp XX XX????

    ?????????????

    ??????C?????C???????????????main????int main(int argc, char* argv[])

    argc?????????? argv??????????????

    eg1? [root@ubuntu: /root# ./pg I am NEW argv[0]: pg argv[1]: I argv[2]: am argv[3]: NEW

    eg2? #include <stdio.h> int main(int argc, char* argv[]){ int i; for (i=0; i<argc; i++){ printf("argv[%d]: %s\n", i, argv[i]); } return 0; }

    argv[0]??????? argv[1]~argv[5]??????????????????????????????

    ????(POSIX API)

    ???int open(const char *pathname, int oflag, ...) ???????????????????????????? pathname????? oflag???????? O_RDONLY????? O_WRONLY????? O_RDWR?????? O_APPEND?????????? O_CREAT??????????????????????mode??????mode & ~umask O_EXCL???????O_CREAT???????????????????????????????????? O_TRUNC????????????????????????0

    ????(POSIX API)

    ???ssize_t read(int filedes, void *buf, size_t nbytes) ????????????? ????

    • ?????????????????????????????????????????????????????
    • ?????-1???????????????????? ??????????????????????+???????

    ???(POSIX API)

    ???ssize_t write(int filedes, const void *buf, size_t nbytes) ????????????? ????

    • ????????????
    • ?????-1???????????????????? ??????????????????????+???????

    ????(POSIX API)

    ???int close(int filedes) ?????????? ????

    • ?????0
    • ?????-1 ?????????????????????

    ????(POSIX API)

    ???off_t lseek(int filedes, off_t offset, int whence) ?????????????? ?????????????????? ????????????????0? ??????O_APPEND??????????????????? ???????????????????????+??????? lseek?????whence?offset?offset????? whence?SEEK_SET???????=???+offset???? whose?SEEK_CUR???????=??????+offset???? whose?SEEK_END???????=???+offset????

    ????

    ??POSIX API???????????????????? ??????POSIX???????????????????????????errorno??????????????? extern errorno ????errorno.h

    ??????????????? ??1?char *strerror(int errnum) ????string.h ????errnum?????????????? ??2?void perror(const char * msg) ????stdio.h ??????msg??????????errorno??????

    ??? #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <string.h> #include <errno.h>

    extern errorno;

    int main(int argc, char *argv[]){ int fd_src, fd_dst; char *buf; int fd_src_length; int n, m;

    if (-1 == (fd_src = open(argv[1], O_RONLY))) {
    perror(argv[1]);
    return -1;
    }
    if (-1 == (fd_dst = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0666))) {
    perror(argv[2]);
    return -1;
    }
    if (-1 == (fd_src_length = lseek(fd_src, 0, SEEK_END))) {
    exit(-1);
    }
    buf = (char *)malloc(fd_src_length + 1);
    if (buf == NULL) {
    printf("malloc error");
    return -1;
    }
    memset(buf, '0', fd_src_length + 1);
    if ((n = read(fd_src, buf, fd_src_length)) > 0) {
    printf("buf:%d", strlen(buf));
    if (n != (m = write(fd_dst, buf, n))) {
    printf("write error");
    exit(-1);
    }
    }
    close(fd_src);
    close(fd_dst);
    free(buf);
    return 0;

    }

    ???https://blog.csdn.net/jeff_liu24/article/details/11561401

    你可能感兴趣的文章
    NVelocity标签使用详解
    查看>>
    NVelocity标签设置缓存的解决方案
    查看>>
    Nvidia Cudatoolkit 与 Conda Cudatoolkit
    查看>>
    NVIDIA GPU 的状态信息输出,由 `nvidia-smi` 命令生成
    查看>>
    nvidia 各种卡
    查看>>
    Nvidia 系列显卡大解析 B100、A40、A100、A800、H100、H800、V100 该如何选择,各自的配置详细与架构详细介绍,分别运用于哪些项目场景
    查看>>
    NVIDIA-cuda-cudnn下载地址
    查看>>
    nvidia-htop 使用教程
    查看>>
    nvidia-smi 参数详解
    查看>>
    Nvidia驱动失效,采用官方的方法重装更快
    查看>>
    nvmw安装node-v4.0.0之后版本的临时解决办法
    查看>>
    nvm切换node版本
    查看>>
    nvm安装 出现 Error retrieving “http://xxxx/SHASUMS256.txt“: HTTP Status 404 解决方法
    查看>>
    nvm安装以后,node -v npm 等命令提示不是内部或外部命令 node多版本控制管理 node多版本随意切换
    查看>>
    NXLog采集windows日志配置conf文件
    查看>>
    ny540 奇怪的排序 简单题
    查看>>
    NYOJ -216 A problem is easy
    查看>>
    NYOJ 1066 CO-PRIME(数论)
    查看>>
    NYOJ 737:石子合并(一)(区间dp)
    查看>>
    nyoj 91 阶乘之和(贪心)
    查看>>