
Linux
文章平均质量分 70
杨龙飞的博客
让人迷茫的原因只有一个
__ 那就是本该拼博的年纪,却想得太多,做的太少!
展开
-
计算机的启动过程
每天都用计算机,可从来不知道计算机是怎样完成启动的。今天在鸟哥那本书上看到了一些介绍,网上查了一些资料,迫不及待想和大家分享一下计算机复杂的启动过程.一.第一阶段:BIOS1.BOIS是一个写入到主板上的韧体,韧体就是写入到硬盘上的一个软件程序,这一段程序被写入ROM(只读内存)芯片里,BOIS程序运行后,会首先检查计算机硬件是否满足运行条件,这被成为"硬件自检",英文名POST;原创 2016-03-13 08:58:55 · 598 阅读 · 0 评论 -
fork() 函数,vfork()函数
1.fork()函数头文件:#include #include 函数原型:pid_t fork(void) fork函数它有两个返回值,调用一次返回两次,成功调用返回两次,成功调用后fork后,当前进程已经分裂为两个进程,一个是原来的父进程,另一个是刚刚创建的子进程,父进程fork后返回刚刚创建的子进程的ID,另一个是子进程中,fork的返回值,返回0, 如果fork失败返回-1原创 2016-03-14 10:03:12 · 543 阅读 · 0 评论 -
getpwuid()函数,getpgrgid()函数()
1.getpwuid()函数通过用户uid查找用户的相关信息,并以passwd的结构体返回其数据. 头文件:#include #include 函数原型:struct passwd *getpwuid(uid_t uid); 参数 文件所有者的uid; 返回值:成功passwd 结构体,uid所对应的用户信息,错误返回空指针, struct passwd { ch原创 2016-03-14 10:03:39 · 5164 阅读 · 0 评论 -
rename(),unlink(),getcwd(),chdir(),opendir(),readdir(),closedir()函数
1.rename(),unlink(),remove()函数#include 原型:int rename(const char *oldpath,const char *newpath); rename会将参数oldpath所指定的文件名改为参数newpath所指定的文件名,若newpath存在,则原文件会被删除;函数执行成功返回0,错误返回-1;#include原创 2016-03-14 10:04:09 · 1089 阅读 · 0 评论 -
文件属性之stat(),fstat(),lstat(),chown(),fchown(),lchown()函数
1.stat(),fstat(),lstat()函数这三个函数包含在头文件<sys/types.h>中 原型:int stat(const char *file_name,struct stat *buf); int fstat(int filedes,struct stat *buf); int lstat(const char *file_name,struct stat *原创 2016-03-14 10:04:44 · 273 阅读 · 0 评论 -
dup,dup2,fcntl,ioctl,系统调用
1.dup()函数和dup2函数dup()和dup2()函 数包含在头文件中 原型:int dup(int oldfd); int dup2(int oldfd,int newfd); dup用来复制参数oldfd所指的文件描述符,返回最小的尚未被使用的文件描述符,错误返回-1;返回的新文件描述符和参数oldfd指向同一个文件,共享所有的锁定,读写指针等各项权限或标志位;如果用lsee原创 2016-03-14 10:05:32 · 731 阅读 · 0 评论 -
read()函数,write()函数,lseek()函数
1.read()函数read()函数包含在头文件<unistd.h>中, 原型:ssize_t read(int fd,void *buf,size_t count); 函数参数的含义:从文件描述符fd所指的文件中读取count个字节的数据到buf所指向的缓冲区,count为0,不读数据,返回0,返回值就是实际读取的字节数,如果read()顺利返回实际读到的字节数,和参数count比较,若原创 2016-03-14 10:06:08 · 8016 阅读 · 0 评论 -
chmod()函数和fchmod()函数,open()函数和creat()函数,close()函数,umask命令
1.chmod 函数和fchmod函数chmod和fchmod函数包含在头文件<sys/types.h>和中 原型;int chmod(const char *path,mode_t mode); int fchmod(int fildes,mode_t mode); 区别:chmod函数第一个参数是文件名,fchmod以文件描述符作为第一个参数;参数:第一个参数path是要设置权原创 2016-03-14 10:06:45 · 1648 阅读 · 0 评论 -
man 命令的使用,linux根分区详解!
1.man 命令的使用 man命令如何使用呢,当我们在编写程序时,要用到一个函数,却不知道参数的个数,顺序,头文件等信息,这是man命令强大的功能就可以帮助你解决这个问题,比如,你要知道lseek函数的原型和所属头文件,就可以在终端输入man lseek;如果你要查看的函数名既是linux 命令,又是系统调用,比如说mkdir,也就是说mkdir既能在终端里执行,又能系统调用,这是我们可以通原创 2016-03-14 10:08:23 · 1329 阅读 · 0 评论 -
如何查出某个宏定义在哪个头文件内?
yang@yang:~$ sudo find /usr/include/ -name *.h | xargs grep 'ORIG_EAX' /usr/include/reg.h:# define ORIG_EAX 11/usr/include/x86_64-linux-gnu/asm/ptrace-abi.h:#define ORIG_EAX 11原创 2016-09-23 15:13:42 · 4011 阅读 · 0 评论 -
守护进程的创建
1.守护进程的概念守护进程是指在后台运行的,没有控制终端与之相连的进程,它独立于控制终端,周期性的执行某种任务.2.守护进程的启动在linux系统启动时从启动脚本/etc/rc.d中启动.可以由作业规划进程crond 启动.可以由用户终端(通常是shell)执行;3.守护进程创建的要点让进程在后台执行,方法是fork一个子进程,然后使得父进程原创 2016-03-14 10:02:38 · 485 阅读 · 0 评论 -
标准的I/O缓冲:全缓冲,行缓冲,无缓冲
今天在学习进程时遇到关于一个I/O缓冲区的的问题,和大家分享一下,首先举个简单的例子:#include int main() { printf("hello,world!"); _Exit(0);}编译成功后却原创 2016-03-14 10:02:09 · 1939 阅读 · 0 评论 -
系统调用函数
1.字节顺序和转换函数先来了解一个概念:大端模式和小端模式 大端模式是指高字节数据存放在低地址处,低字节数据存放在高地址处. 小端模式是指低字节数据放在内存的内存低地址处,高字节数据存放在内存的高地址处. 在网络上传输数据时,由于数据传输的两端可能对应不同的硬件平台,采用的存储字节的顺序也可能不一致,因此TCP/IP协议规定了在网络上必须采用网络字节顺序(大端模式),对于char 型数原创 2016-03-13 09:05:20 · 487 阅读 · 0 评论 -
UDP套接字的数据传输.套接字的关闭
1.发送数据#include #include ssize_t sendto(int s,const void *msg,size_t len ,int flags,const struct sockaddr *to,socklen_t tolen); 函数sendto的功能与参数send类似,但函数sendto不需要套接字处于连接状态,所以该函数通常用来发送UDP数据,原创 2016-03-13 09:06:44 · 2796 阅读 · 0 评论 -
套接字地址结构及其创建
1.套接字的地址结构结构struct sockaddr定义了一种通用的套接字地址, 它在头文件linux/socket 中定义: struct socketsddr{ unsigned short sa_family; //地址类型,AF_xxx char sa_data[14]; // 14字原创 2016-03-13 09:08:00 · 656 阅读 · 0 评论 -
出错处理
1.错误检查函数执行失败时,一般都会返回一个特定的值比如-1,空指针,这些只能说明有错误发生,但具体的错误原因却没有说明,在头文件erron.h中定义变量errno(错误码),可以通过错误码,得到错误的描述信息. 程序开始执行时,errno被初始化为0,很多库函数在执行过程中遇到错误时将errno设置为相应的错误码,函数被调用成功时,它们不修改errno的值,所以不能根据errno的值来判原创 2016-03-13 09:09:17 · 1336 阅读 · 0 评论 -
线程的终止和私有数据
linux下线程的终止有有两种方式:1.通过return从线程函数返回. 2.通过掉用 pthread_exit()使线程退出,pthread_exit在头文件 pthread.h中申明. 函数原型:void pthread_exit(void * retval); 注意,有两种特殊的情况,第一种情况是,在主线程中,如果从main函数返回 或是调用了exit()函数退出主线程,则整个进程都原创 2016-03-13 09:10:35 · 462 阅读 · 0 评论 -
互斥锁和条件变量
为了允许在线程或进程之间共享数据,同步是必须的,互斥锁和条件变量是同步的基本组成部分.1.互斥锁互斥锁是用来保护临界区资源,实际上保护的是临界区中被操纵的数据,互斥锁通常用于保护由多个线程或进程分享的共享数据,一般是一些可供线程间使用的全局变量,来达到线程同步的目的,保证任何时刻只有一个线程或进程在执行其中的代码,互斥锁的函数:1.pthread_mutex_ini原创 2016-03-13 09:09:49 · 547 阅读 · 0 评论 -
线程属性_实时调度
1.pthread_attr_init(pthread_attr_t attr)和pthread_attr_destroy(pthread_attr_t attr)函数.pthread_attr_setdetachstate(pthread_attr_t attr,int detachstate);pthread_attr_setdetachstate(pthread_attr_t attr,原创 2016-03-14 09:58:32 · 570 阅读 · 0 评论 -
线程创建函数pthread_create
头文件:#include b函数原型:int pthread_created(pthread_t *thread,pthread_attr_t *attr,void * (*start_routine)(void *),void *arg); 函数参数含义: thread:该参数是一个指针,当线程创建成功时,用来返回创建的线程的ID. attr:该参数用于指定线程的属性,NULL表示默认属性.原创 2016-03-14 10:00:03 · 1537 阅读 · 0 评论 -
setuid()函数,setgid()函数,getpriority()函数,setpriority()函数,nice()函数
1.setuid()函数,setgid() 函数,头文件:#include #include 函数原型:int setuid(uid_t uid); int setgid(gid_t gid); 函数说明:若进程具有root 权限, 则函数 将实际用户的ID(组), 有效用户的ID(组),都设置为参数uid; 若进程不具有root权限,但uid等于 实际用户 ID(组), 则 se原创 2016-03-14 10:01:09 · 2694 阅读 · 0 评论 -
wait()函数,waitpid()函数
1.wait() 函数,waitpid函数()头文件:#include #include 函数原型:pid_t wait(int *statloc); pid_t waitpid(pid_t pid,int *statloc,int options); 函数说明:wait函数使父进程暂停执行,直到它的一个子进程结束为止,该函数的返回值是终止运行的子进程的PID.参数stat原创 2016-03-14 10:01:40 · 2723 阅读 · 0 评论 -
最佳线程数和QPS以及RT
最近学习性能优化方面的东西,所以,总结一下:名词解释QPS:系统每秒处理的请求数(query per second)RT:系统的响应时间,一个请求的响应时间,也可以是一段时间的平均值.最佳线程数:刚好消耗完服务器瓶颈资源的临界线程数. QPS和RT的关系对于单线程:QPS = 1000/RT 对于多线程:QPS = 1000*线程数/RT性能的两个点:吞吐量和延迟,通俗的解释就是QPS和R原创 2016-11-26 09:03:36 · 2336 阅读 · 0 评论