Linux下文件的操作(zt)
1.文件的创建和读写
当我们需要打开一个文件进行读写操作的时候,我们可以使用系统调用函数open.使用完成以后我们调用另外一个close函数进行关闭操作.
int open(const char *pathname,int flags);
int open(const char *pathname,int flags,mode_t mode);
int close(int fd);
open函数有两个形式.其中pathname是我们要打开的文件名(包含路径名称,缺省是认为在当前路径下面).flags可以去下面的一个值或者是几个值的组合.
O_RDONLY :以只读的方式打开文件.
O_WRONLY :以只写的方式打开文件.
O_RDWR :以读写的方式打开文件.
O_APPEND :以追加的方式打开文件.
O_CREAT :创建一个文件.
O_EXEC :如果使用了O_CREAT而且文件已经存在,就会发生一个错误.
O_NOBLOCK :以非阻塞的方式打开一个文件.
O_TRUNC :如果文件已经存在,则删除文件的内容.
前面三个标志只能使用任意的一个.如果使用了O_CREATE标志,那么我们要使用open的第二种形式。还要指定mode标志,用来表示文件的访问权限。mode可以是以下情况的组合.
-------------------------------------------------
S_IRUSR 用户可以读 S_IWUSR 用户可以写
S_IXUSR 用户可以执行 S_IRWXU 用户可以读写执行
-------------------------------------------------
S_IRGRP 组可以读 S_IWGRP 组可以写
S_IXGRP 组可以执行 S_IRWXG 组可以读写执行
-------------------------------------------------
S_IROTH 其他人可以读 S_IWOTH 其他人可以写
S_IXOTH 其他人可以执行 S_IRWXO 其他人可以读写执行
-------------------------------------------------
S_ISUID 设置用户执行ID S_ISGID 设置组的执行ID
-------------------------------------------------
我们也可以用数字来代表各个位的标志.Linux总共用5个数字来表示文件的各种权限.
第一位表示设置用户ID.
第二位表示设置组ID,
第三位表示用户自己的权限位,
第四位表示组的权限,
最后一位表示其他人的权限.
每个数字可以取1(执行权限),2(写权限),4(读权限),0(什么也没有)或者是这几个值的和.
相关文档:
1.内核编译必须在root环境下,而Ubuntu装后没有root用户,所以设置root密码
sudo passwd root
2.su回车,输入密码就是以root身份了,
3.下载linux内核并将其转移到/usr/src文件夹
cp 文件 /usr/src
4.tar -jxvf linux-2.6.29.4.tar.bz2
......
简介
模块(module)是在内核空间运行的程序,实际上是一种目标对象文件,没有链接,不能
独立运行,但是可以装载到系统中作为内核的一部分运行,从而可以动态扩充内核的功能。模块最主要的用处就是用来实现设备驱动程序。
使用模块的优点:
1,将来修改内核时,不必全部重新编译整个内核,可节省不少时间
2,系统 ......
Linux Shell 环境中支持输入输出重定向,用符号<和>来表示。0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出,比如 2>a.txt 表示将错误信息输出到文件a.txt中。
同时,还可以在这三个标准输入输出之间实现重定向,比如将错误信息重定向到标准输出,可以用 2> ......
linux下apache+php安装常见问题
configure: error: Unable to find libgd.(a|so)
如果使用的是ubuntu或debian就很简单了,直接sudo apt-get install apache2 libapache2-mod-php5 php5 php5-gd 就基本上搞定,但是用源代码安装还是很麻烦~
wget http://www.boutell.com/gd/http/gd-2.0.11.tar.gz
tar zxvf gd-2.0.11 ......
如果在linux C\C++环境下判断某个文件是否存在,可以使用access函数:
#include <unistd.h>
#include <stdio.h>
int main()
{
const char* file1 = "access.cpp";
const char* file2 = "access1.cpp";
& ......