linux下常用函数及命令

来源:互联网 发布:sip服务器端口 编辑:程序博客网 时间:2024/06/05 09:02

/dev/tty 键盘和数据的描述文件,在这个文件上写,相当于显示在用户的屏幕上,读相当于从键盘获取用户的输入。

tty*代表终端

打开文件:

open

头文件 <fcntl.h>

int fd=open(char *name,int how);

how O_RDONLY, O_WRONLY,O_RDWR

从文件中读取数据

read

头文件<unistd.h>

ssize_t numread=read(int fd,void*buf,size_t qty);

fd文件描述符,buf用来存放数据的目的缓冲区,qty要读取的字节数。

创建/重写文件:

creat

头文件:<fcntl.h>

int fd=creat(char*filename,moed_t  mode);

如果这个文件不存在就创建,若存在就清空。

如: fd=creat(“ad”,0644)

写文件:

write

头文件<unistd.h>

ssize_t result=write(int fd,void *buf,size_t amt);

失败返回-1,成功返回字节数

 

改变文件的当前位置:

lseek  设置读写指针的位置

头文件<sys/type.h> <unistd.h>

off_t oldpos=lseek(int fd,off_t dist, intbase);

dist 移动距离,baseSEEK_SET=>文件开始位置。(0)

SEEK_CUR 文件当前位置(1)  SEEK_END 文件结尾(2)

打开目录

opendir

头文件<dirent.h>

DIR*opendir(const char*name);//man 3opendir

读取目录

readdir

头文件<dirent.h>

struct dirent *readdir(DIR*dirp);  //man 3 readdir

ls  -a 列出的内容包含以“.”开头的文件,linux中一般以”.”开头的都是隐藏文件

-s 显示以块为单位的文件大小。-I 显示出对应的i节点号。-R 显示根目录下的所有文件。

“.”当前目录,”..”上一级目录

打开文件目录:opendir ,读取目录内容,readdir

struct dirent*readdir(DIR *dirp);//头文件 <dirent.h>

DIR*opendir(const char *name);

du  diskusage的缩写,该命令给出指定目录及其子目录下所有文件占用硬盘中数据库的总数。

ls –R 显示出该文件目录下的所有文件和目录,

 

find 在一个目录及子目录下检索符合要求的文件和目录。可以显示出路径

创建新的目录

mkdir

头文件<sys/stat.h> <sys/types.h>

int result = mkdir (char * pathname,mode_tmode);

 

rmdir

头文件<unistd.h>

int result=rmdir(const char*path);

rm 

头文件<unistd.h>

int result=unlink(const char *path);// 删除一个链接,不能用来删除目录,

 

ln

头文件<unistd.h>

int result = link(const char *orig,constchar* new); //orig原始链接的名字,new新链接的名字。

 

mv

头文件<unistd.h>

int result = rename(constchar *from,const char *to);//适应于文件和目录

 

cd

头文件<unistd.h>

int result = chdir(constchar *path);//改变所调用进程的当前目录

得到文件的属性,

stat   man 2 stat有详细说明。

头文件<sys/stat.h>

int result = stat(char * fname, struct stat*bufp);//fname文件名,bufp指向buffer的指针。

 

ln A B创建硬链接。B是A的硬链接,和A完全一样。

ln –s A C 创建软链接。c是A的软链接,c只是一个指向A的指针和windows下的快捷方式类似。又称为符号链接,符号链接可以跨越文件系统。

diff A V 显示A和V之间的不同,若相同无返回。

 

symlink 用于创建一个符号链接。

int symlink(const char*oldpath,constchar*newpath);

readlink 用于获取源文件

ssize_t readlink(const char* path,char*buf,size_t bufsiz);//man 2 readlink

/dev 设备挂载点

所有文件相关的系统调用都适应于设备。

命令tty用来告知用户所在终端的文件名。也就是当前有效的终端

修改文件描述符

fcntl

头文件<fcntl.h>

int result = fcntl(int fd,int cmd);

int result = fcntl (int fd,int cmd,long arg);

int result = fcntl(int fd,int cmd, structflock *lockp);

fd 需要控制的文件描述符,cmd需进行的操作,arg操作的参数,lock锁信息。

修改的时候需要进行三步,

1获取设置,2修改设置,3存储设置

使用stty改变驱动程序设置

 

读取tty驱动程序的属性

tcgetattr

头文件<termios.h> <unistd.h>

int result = tcgetattr(int fd, structtermios *info);

tcsetattr

int result = tcsetattr(int fd, int when,struct termios *info);

when 是改变设置的时间。when允许的参数有TCSANOW立即更新

TCSADRAIN等待直到驱动程序队列中所有输出都被传送到终端。然后进行驱动程序的更新。

TCSAFLUSH等待直到驱动程序队列中的所有输出都被传送出去。然后,释放所有队列中的输入数据,并进行一定的变化。

 

三个操作:

测试位: if(flagset&MASK)

置位 flagset|=MASK

清除位 flagset &=~MASK

 

控制一个设备:

ioctl

头文件<sys/ioctl.h>

int result = ioctl(int fd,intoperation[,arg…]);

operation 需进行的操作。arg操作所需参数

 

替换命令,

tr

tr A  B //B替换A

ICANON字符输入模式改成非规范模式,没有缓冲区,输入后立即输出。

VMIN告诉驱动,一次读取多少个元素。

 

简单的信号处理:

signal

头文件<signal.h>

result = signal(int signum,void(*action)(int));

signum 需相应的信号,action如何响应。

action可以是函数名,或以下两个特殊值之一,SIG_IGN,忽略信号。

SIG_DFL,将信号恢复为默认处理。

 

原创粉丝点击