linux中的c运用
小二linux
这个作者很懒,什么都没留下…
展开
-
多个指针指向同一个位置赋值为空
多个指针指向同一个地址,这样使用没什么问题,只是操作时要注意。 因为,每个指针变量保存的值,仅仅是指向的内容的地址值。多个指向同一个地址的指针,若其中一个指针等于NULL,不影响另一个指针。 代码 29 int* a = new int(10); 30 int* c = a; 31 32 delete c; // 指向的那块内存内容(new int(10)释放 33 c = NULL // 仅让c的值变为 null, a的值(地址)未变 34 35 if (a !...原创 2020-08-10 11:23:43 · 479 阅读 · 0 评论 -
深入理解linux内核中的IS_ERR()、PTR_ERR()、ERR_PTR()
一、函数原型1、static inline void *ERR_PTR(long error){ return (void *) error;}将整数转换成指针 打印%p就是在计算机里存储的内容。如-1 返回的地址是0xffffffffffffffff。这里的-1为什么是0xffffffffffffffff。其实这是计算机存储的。是-1的补码 。什么是补码请继续往下看。2、static inline long PTR_ERR(const void *ptr){...原创 2020-07-23 09:21:00 · 779 阅读 · 0 评论 -
linux 用户态和内核态通信proc系统
1、proc系统是一个虚拟的系统机器在一启动的时候就已经挂在上了,其原理我们不在分析。之后我们只管用proc系统就ok了。内核提供了一些api来操作proc系统。这里主要就是创建目录proc_mkdir ,创建文件proc_create 和create_proc_entry,删除remove_proc_entry2、proc_create 和create_proc_entry 都说有区别实质是一样的。区别在于proc_create 参数传入了file_operations *proc_fops,fi原创 2020-07-03 14:33:58 · 571 阅读 · 0 评论 -
inode分配
new_inode(sb) 这是给inode分配一个新的空间里面调用inode_init_always会给inode赋初始值如果注册了自己的函数 if (sb->s_op->alloc_inode) inode = sb->s_op->alloc_inode(sb); else inode = kmem_cache_alloc...原创 2020-02-25 09:56:22 · 470 阅读 · 0 评论 -
mount -t 调用过程
mount是如何实现自己写的文件系统的挂在的。1.mount -t 选择是自己文件系统的类型。其实也就是 /sbin/目录下的文件名字 mount的代码实现 sprintf(mountprog, "/sbin/mount.%s", type);2.获取到自己写的可执行文件后mount会fork 子进程去执行 实现代码res = fork();execv(mountprog, moun...原创 2020-02-24 10:02:44 · 5184 阅读 · 0 评论 -
字节对齐问题详解
struct A{ int a; char b; short c;};struct B{ char b; int a; short c;};sizeof(strcut A)值为8;sizeof(struct B)的值却是12。https://www.cnblogs.com/clover-toeic/p/38...转载 2019-05-20 16:12:39 · 125 阅读 · 0 评论 -
svn生成patch和打(导入)patch文件的方法
生成patch文件:svn diff > patchFile // 整个工程的变动生成patch或svn diff file > patchFile // 某个文件单独变动的patchsvn回滚:svn revert FILE // 单个文件回滚svn revert DIR --depth=infinity // 整个目录进行递归回滚打patch:patch -p...转载 2019-05-27 11:56:27 · 1464 阅读 · 0 评论 -
centos源码下载
http://www.360doc.com/content/16/1018/12/18525993_599328687.shtml原创 2019-08-06 13:28:12 · 466 阅读 · 0 评论 -
内核调试打印内容
直接结构体名字 加地址 前提是知道地址。 struct slab ffffffff8116ed24mod -s nnnn./nnnn.ko 加载模块自己的模块#12 [ffff881064c1bbd8] rpc_run_task at ffffffffa0567475 [sunrpc]#13 [ffff881064c1bbf8] enfs_session_call_sync at...原创 2019-05-09 13:16:37 · 177 阅读 · 0 评论 -
内核__link_path_walk函数详解
做文件系统软连接时候,分析nfs的实现时候。用dump_stack() 发现__link_path_walk函数被调用。这个函数已经多次被使用,都没有细究。现在觉得深入的了解一下。调用过程调用do_lookup这个来返回文件的属性,如果是链接文件则进行特殊的处理do_follow_link...原创 2019-05-09 10:25:40 · 921 阅读 · 0 评论 -
字符串指针
字符串指针的定义和初始化在C语言中,字符串指针不一定需要初始化,而仅当需要读取指针所指向的内容前,需要初始化。当然,从编程的实践来说,定义一个字符串指针,最好进行初始化工作。比如:char *p = "Hello world";原创 2015-04-21 14:36:51 · 321 阅读 · 0 评论 -
open函数读文件最后乱码
我今天用open函数读取一个文件到一个字符指针指向的空间,之后我用字符串分割函数分割后传到一个字符指针数组中,这是我在读取字符指针数组里里面的内容的时候出现乱码。百思不得其解之后我read的时候少读一个字符就是最后的未零。之后自己在在读出字符串指针后面加上未零。最后问题解决了。哈哈原创 2015-04-26 21:56:16 · 884 阅读 · 0 评论 -
linux中将整个目录移动到另一个目录中
mv -vr nihao /path/you/shoudao。-r表示递归,-v表示verbosenihao是一个目录文件 后面的也是一个目录文件。原创 2015-04-30 17:36:10 · 25607 阅读 · 1 评论 -
复制的代码整体向右移动一个Table
先在可视的模式下(按v)选中要移动的行。之后安> Tab 就可以了。原创 2015-05-08 10:13:32 · 1069 阅读 · 0 评论 -
vim中插入多行一样的字符
首先ctrl+v进入列选择->按大写I进入插入模式->输入要插入的字符->按Esc键退出->就好了原创 2015-05-21 14:41:23 · 2942 阅读 · 0 评论 -
vim 的使用
字符串的查找:/要找的字符 按n向后找 按N向前找字符串的替换:vim 中可用 :s 命令来替换字符串,具体如下::s/str1/str2/ 替换当前行第一个 str1 为 str2:s/str1/str2/g 替换当前行中所有 str1 为 str2:m,ns/str1/str2/ 替换第 n 行开始到最后一行中每一行的第一个 str1 为 str2:m,ns/st原创 2015-04-22 09:23:45 · 523 阅读 · 0 评论 -
select函数
网络编程中一个很重要的函数,没有整理,直接转过来,讲的还是蛮详细的。转自:http://blog.csdn.net/zhw888888/archive/2009/03/29/4034515.aspx Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom转载 2015-07-23 16:35:23 · 355 阅读 · 0 评论 -
nfs日志打开
sysctl -w sunrpc.nfs_debug=65535客户端日志打开,0表示关闭。sysctl -w sunrpc.nfsd_debug=1023nfs服务端日志打开,0表示关闭。原创 2019-05-05 10:32:49 · 2586 阅读 · 0 评论 -
puts
puts()函数用来向标准输出设备写字符串并换行,其调用方式为,puts(s);其中s为字符串字符(字符串数组名或字符串指针)。原创 2014-10-25 11:51:17 · 564 阅读 · 0 评论