免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 847 | 回复: 0
打印 上一主题 下一主题

BLP-chap3-文件操作 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-15 21:40 |只看该作者 |倒序浏览

                                                目录是文件,用来保存其他文件的节点号和名字
cd ~user:可以进入user的主目录
/dev/null:
    写向该设备的输出被丢弃,读该设备会立刻返回一个文件结束符
    创建空文件:
       cp /dev/null empty_file
touch:
    改变文件的修改时间,并不会把有内容的文件变成空文件
块设备是那些支持随即文件系统存取的设备,例如磁盘
库函数为了解决底层系统调用的低效率问题
open给出的模式值将与用户掩码(umask)的反值做AND操作。
strerror:(见apue p11)
    #include
    char    *strerror(int errnum);
    strerror将errnum(通常是errno)映射为一个出错字符串,并返回此    字符串的指针。
XSI: X/Open System Interface,X/Open系统接口
创建临时文件的技巧:
    先open创建一个文件,然后调用unlink。
   
如何在linux下使用c语言操作临时文件
unlink函数删除文件的目录入口,所以临时文件还可以通过文件描述符进    行访问,直到最后一个打开的进程关闭文件操作符,或者程序退出后临时文    件被自动彻底地删除。
/proc文件系统:
    linux提供一个特殊的文件系统procfs,通常表现为/proc.
    cat /proc/cpuinfo
    cat /proc/meminfo
    cat /proc/version
    cat /proc/net/sockstat
    cat /proc/sys/fs/file-max
    改变最多同时能打开的文件数:
    echo 60000 > /proc/sys/fs/file-max
4     0 16828 16823  15   0   4660  1480 wait   Ss   pts/1      0:00 bash
[root@localhost chap3]# ls /proc/16828
attr     coredump_filter  environ  limits    maps    mountstats  root       stat    task
auxv     cpuset           exe      limits    mem     oom_adj     schedstat  statm   wchan
cmdline  cwd              fd       loginuid  mounts  oom_score   smaps      status
[root@localhost chap3]# cat /proc/16828/cmdline
bash[root@localhost chap3]# od /proc/16828/cmdline
0000000 060542 064163 000000
0000005
[root@localhost chap3]# od -c /proc/16828/cmdline
0000000   b   a   s   h  \0
0000005
[root@localhost chap3]# ls /proc/16828/fd
0  1  2  255
目录扫描程序
#include
#include
#include
#include
#include
#include
/* 伪代码
* depthfirst(root)
* {
*      for each node at or below root
*      visit   node;
*              if node is a directory
*                depthfirst(node);
* }
*/
void
printdir(char *dir, int depth)
{
        DIR             *dp;         /* 目录流 */
        struct dirent   *entry;      /* dirent结构体 */
        struct stat     statbuf;     /* 用于返回通过文件名查到的文件状态信息 */
        /* 打开目录,并创建目录流 */
        if ((dp = opendir(dir)) == NULL)
        {
                fprintf(stderr, "opendir %s error\n", dir);
                return;
        }
        chdir(dir);
        /* 循环读目录 */
        while ((entry = readdir(dp)) != NULL)
        {
                lstat(entry->d_name, &statbuf); /* 获取文件状态信息 */
                if (S_ISDIR(statbuf.st_mode))/* 如果是目录,则递归; 如果是文件,则打印名字*/
                {
                        if (strcmp(".", entry->d_name) == 0
                                || strcmp("..", entry->d_name) == 0)
                                continue;
                        printf("%*s%s/\n", depth, " ", entry->d_name);   /* 打印目录名 */
                        /* 递归 */
                        printdir(entry->d_name, depth+4);
                } else {
                        printf("%*s%s\n", depth, " ", entry->d_name);   /* 打印文件名 */
                }
        }
        chdir("..");
        closedir(dp);
}
int
main(int argc, char *argv[])
{
        char *topdir = ".";
        if (argc >= 2)
                topdir = argv[1];
        printf("directory scanf: %s\n", topdir);
        printdir(topdir, 0);
        exit(0);
}
    运行:
[root@localhost chap3]# ./printdir /root/src/blp
directory scanf: /root/src/blp
chap11/
    test_thread
    test_thread.c
chap3/
    copy_system.c
    destfile
    copy_system
    printdir.c
    srcfile
    printdir
     
   
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94445/showart_1930431.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP