
Linux开发
文章平均质量分 85
looox007
这个作者很懒,什么都没留下…
展开
-
文件控制的内核表达
在同一个进程中,如果多次使用open打开同一个文件,每次调用open都会返回一个新的文件描述符。这些文件描述符是相互独立的,每个都有自己的文件读写位置等状态。修改其中一个文件描述符的状态不会影响其他文件描述符。 在父子进程之间,如果调用fork创建子进程,子进程会继承父进程的文件描述符表。这意味着父子进程共享相同的文件描述符,包括相同的文件读写位置。如果一个进程修改了文件的读写位置,另一个进程也会受到影响。原创 2023-12-12 15:41:54 · 998 阅读 · 3 评论 -
不可重入函数
在并发编程中,可重入函数是更为理想的选择,因为它们可以安全地在多个任务或线程之间共享和调用,而不需要额外的同步措施。而可重入性关注的是函数的自身特性,即函数的执行不依赖于全局状态或共享资源,可以被中断和重入而不会引发问题。线程安全的实现通常要求采取适当的同步措施,如互斥锁、信号量或原子操作,以确保多个线程之间的数据访问不会产生冲突。不可重入函数通常依赖于全局状态或共享资源,这使得多个任务或线程之间的并发访问可能会导致竞态条件或数据竞争。,因为线程安全的函数可能仍然依赖于全局状态或共享资源。原创 2023-11-28 18:41:55 · 1035 阅读 · 0 评论 -
Linux进程控制
在调用进程内部执行一个可执行文件。exec 函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容。exec 函数族的函数执行成功后不会返回,因为调用进程的实体,包括代码段、据段和堆栈等都已经被新的内容取代,只留下进程ID 等一些表面上的信息仍保持原样;只有调用失败了才会返回 -1并从原程序的调用点接着往下执行。调用exec 函数族并不是新建一个进程而是只替换用户区的数据在 UNIX 系统中,用户通过终端登录系统后得到一个 shell 进程,这个终端成为 shell 进程的。原创 2023-11-28 18:14:59 · 1144 阅读 · 0 评论 -
Linux文件IO
每个标准 C 库的 IO 函数都带有缓冲区注意:一个文件可以打开多次,但是每次打开的文件描述符不同。后面介绍的函数均为Linux系统IO函数。作用:打开一个已经存在的文件参数:返回值:如果成功返回一个新的文件描述符,如果失败返回-1作用:读取指定文件参数:返回值:如果成功大于0返回实际读取到的字节数,等于0表示文件已经读取完毕;如果失败返回-1并设置errno作用:写入指定文件参数:返回值:如果成功大于0返回实际读取到的字节数,等于0表示没有任何内容写入文件;如果失败返回-1并设置errno 1.移动文件原创 2023-11-15 22:06:29 · 120 阅读 · 0 评论 -
Linux系统编程
◼ 库文件是计算机上的一类文件,提供给使用 者一些可以直接拿来用的变量、函数或类。◼ 库文件是特殊的一种程序,不能单独运行,可以简单的把库文件看成一种代码仓库。静态库在程序的链接阶段被复制 到了程序中;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加 载到内存中供程序调用。◼ 库的好处:1.代码保密 2.方便部署和分发Makefile 是一种用于管理和自动化软件项目编译、构建和部署过程的文本文件。原创 2023-11-15 21:58:50 · 75 阅读 · 0 评论 -
有名管道实现简单版聊天功能
它会检查是否有重复的用户名,如果没有则将用户信息添加到`users`数组中,并向客户端返回注册结果。处理注册请求:从注册FIFO中读取用户名、密码和用户私有FIFO名称,然后调用`register_user`函数来处理注册逻辑。2. 定义用户结构体,用于存储用户信息,包括用户名、密码、登录状态和用户私有FIFO名称。8. 发送消息:客户端输入接收者和消息,然后将消息发送给服务器,服务器会将消息传递给接收者的私有FIFO。2. 定义客户端私有FIFO名称`myfifo`,该名称基于客户端的用户名和进程ID。原创 2023-11-14 23:43:26 · 129 阅读 · 0 评论 -
Linux kill 、kill -15、kill -9 的区别
信号后,会先释放自己的资源,然后再停止。但是也有程序可能接收信号后,做一些其他的事情(如果程序正在等待IO,可能就不会立马做出响应),也就是说,,两个命令在Linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序中如果用错了,可能会造成莫名其妙的现象。原创 2023-10-10 22:30:33 · 7129 阅读 · 0 评论 -
关于fork多进程中printf的问题
父进程(P0),子进程(P1),子进程(P2),子进程(P3),子进程(P4),子进程(P5),子进程(P6),子进程(P7),子进程(P8),子进程(P9),子进程(P10),子进程(P11),子进程(P12),子进程(P13),子进程(P14),子进程(P15):退出while循环,打印。子进程(P1):进入while循环,创建子进程(P5),子进程(P2):进入while循环,创建子进程(P6),子进程(P3):进入while循环,创建子进程(P7),原创 2023-10-10 14:50:09 · 263 阅读 · 0 评论