这篇文章主要介绍C语言在linux下编程的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
文件操作
# include & lt; sys/unistd.h>//含有密切的函数 # include & lt; fcntl.h>//含有开函数 int main () { ,,,int fd=开放(“text.txt" O_RDONLY),, ,,,关闭(fd); }//O_RDONLY是一个宏,代表这个文件只读,常用的就是这三个 # define o_rdonly,,,,, 00//只读 # define o_wronly,,,,, 01//只写 # define o_rdwr,,,,, 02年//读写都可以
上述的代码打开了一个文件,随即又关上了。那个int类型的变量fd叫做文件描述符(文件描述符)。用一个数字代表一个对象,这是C语言常见的设计模式,OpenGL的实现也是类似。
它的底层一般是这样的:真正操作的对象是一个复杂的结构体,这些对象存放在一个数组中,而数字代表真实对象在数组中的索引值。
在打开和关闭之间,当然要进行一些读写操作,示例如下:
# include & lt; sys/unistd.h> # include & lt; fcntl.h> int main () { ,,,int fd=开放(“test.txt" O_WRONLY); ,,,写(fd,“hello world" 11);,//向文件中写入了hello 世界 ,,,关闭(fd); }
看到这,你可能觉得不屑一顾,这和& lt; stdio.h>不是差不多嘛。别急啊兄弟,这个fd可不仅仅代表通常意义的文件,Linux的其中一个设计哲学是:一切皆文件。让我们列举一下这个fd能代表什么:
1。文本文件和二进制文件(这两叫普通文件)
引用>
2。目录文件(可以理解为文件夹)
3。字符设备和块设备(例如网卡和硬盘)
4。套接字(实现网络通信的接口,读写它相当于网络通信)
5。符号链接(类似于windows桌面上的快捷方式)
6。管道(用于进程通信)上面这个表你可能记不住,但是我相信你体会到了它的强大。下面是一个向控制台打印字符串的例子。
# include & lt; sys/unistd.h> # include & lt; fcntl.h> int main () { ,,,写(STDOUT_FILENO,“hello world" 11); }//上面的STDOUT_FILENO是一个宏,表示标准输出,它们的定义是这样的: #定义stdin_fileno 0/*, Standard 输入只*/#定义stdout_fileno 1/*, Standard 输出只*/#定义stderr_fileno 2/*, Standard error 输出只,*/因为0,1,2都已经被占用了,所以我们的fd是从3开始的,如果出错(如文件不存在)则会返回一个负数。维护fd的数组在表示进程的结构体中,所以fd只在它所在的进程有意义。不同的进程可以有相同的fd
虽然统一的fd设计的非常好,但是它并不能让我们看到文件的容量,修改日期等信息,所以还有其他函数供我们使用。
//需包含& lt; sys/stat.h>头文件,其详细内容如下所示 int stat (const char * file_name struct stat * buf); struct 统计 { ,,,dev_t ,,,, st_dev;,,,,,/*, ID of device containing file */文件使用的设备号 ,,,ino_t ,,,, st_ino;,,,,,/*, inode number */,,,,索引节点号, ,,,mode_t ,,, st_mode;,,,,/*, protection */,,文件对应的模式,文件,目录等 ,,,nlink_t ,, st_nlink;,,,/*, number of hard links */,,,,文件的硬连接数,, ,,,uid_t ,,,, st_uid;,,,,,/*, user ID of owner */,,,,所有者用户识别号 ,,,gid_t ,,,, st_gid;,,,,,/*, group ID of owner */,,,组识别号,, ,,,dev_t ,,,, st_rdev;,,,,/*, device ID (if special 文件),*/,设备文件的设备号 ,,,off_t ,,,, st_size;,,,,/*, total 大小,拷贝bytes */,以字节为单位的文件容量,,, ,,,blksize_t st_blksize;,/*, blocksize for file system I/O */,包含该文件的磁盘块的大小,,, ,,,blkcnt_t , st_blocks;,,/*, number of 512 b blocks allocated */,该文件所占的磁盘块,, ,,,time_t ,,, st_atime;,,,/*, time of last access */,最后一次访问该文件的时间,,, ,,,time_t ,,, st_mtime;,,,/*, time of last modification */,/最后一次修改该文件的时间,,, ,,,time_t ,,, st_ctime;,,,/*, time of last status change */,最后一次改变该文件状态的时间,,, };以上是“C语言在linux下编程的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
C语言在linux下编程的示例分析