Linux系统编程
文章平均质量分 93
小宝是狗子啊
这个作者很懒,什么都没留下…
展开
-
Linux之socket详解
目录一、什么是Socket1.1 Socket建立1.2 Socket配置(绑定)1.3 连接建立1.4 数据传输1.5 结束传输二、编程DEMO2.1 TCP编程2.2 UDP编程一、什么是SocketSocket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口Socket接口设计者最先是将接口放在Unix操.原创 2021-04-16 20:43:30 · 4972 阅读 · 0 评论 -
标准C库文件操作API以及DEMO
相关APIFILE *fopen(const char *path, const char *mode);size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);int fseek(FILE *stream, long offset, int whence);int fclose(FI原创 2020-09-09 20:56:22 · 334 阅读 · 0 评论 -
Linux线程相关API以及运用
线程与进程的区别https://www.cnblogs.com/xiehongfeng100/p/4620852.htmlAPI线程int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);int pthread_exit(void *rval_ptr);int pthread_join(pthr原创 2020-08-09 17:13:27 · 389 阅读 · 0 评论 -
Linux进程通信之消息队列与共享内存
消息队列消息队列,是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识1 #include <sys/msg.h>2 // 创建或打开消息队列:成功返回队列ID,失败返回-13 int msgget(key_t key, int msgflg);4 // 添加消息:成功返回0,失败返回-15 int msgsnd(int msqid, const void *ptr, size_t size, int flag);6 // 读取消息:成功返回消息数据的长度,失原创 2020-08-09 13:46:57 · 415 阅读 · 0 评论 -
Linux进程之exec簇、system以及popen函数
exec族函数函数的作用:我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序。当进程调用exec函数时,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。exec族函数原型:#include <unistd.h>int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ...);原创 2020-08-08 18:28:18 · 272 阅读 · 0 评论 -
Linux之父子进程退出
进程的退出void exit(int status);staus为进程的退出状态僵尸进程一个进程在使用exit _exit return 退出的时候,只是灵魂性的退出,而肉体并没有退出,那么我们如何把内核中的肉体,也就是内核中task_struct结构体清掉呢?进程的肉体也叫僵尸进程,那么父进程就要使用wait和waitpid函数进行清除内核中的task_struct结构体zombie的作用是维护子程序的信息,以便父程序在以后能够调用它。这些信息包括:进行ID,终止状态、资源利用率(CPU利用率原创 2020-08-08 17:42:52 · 978 阅读 · 0 评论 -
Linux进程之管道通信
linux进程通信——管道通信`管道通信概述无名管道函数例如有名管道函数例如管道通信概述管道通信分为两种,分别为无名管道和有名管道1.无名管道:在父子进程间通信,是一种半双工的通信方式2.有名管道:可在多进程间通信,是一种全双工的通信方式无名管道函数int pipe(int pipefd[2]);函数说明:包含头文件 #include <unistd.h>pipe用来创建管道,其中pipefd[0]为读取标识符,pipefd[0]为写入标识符管道创建成功返回0,创建原创 2020-08-08 22:09:07 · 142 阅读 · 0 评论 -
Linux进程通信——信号、信号传输消息、信号量以及DMEO
信号typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);int kill(pid_t pid, int sig);DEMO#include <signal.h>#include "stdio.h"int main(int argc,char **argv){ int signum; int pid; c原创 2020-09-21 22:14:22 · 302 阅读 · 0 评论 -
总结open与fopen的区别
对于这两个名字很类似的函数,对于很多初学者来说,不容易搞清楚它们有什么不同,只知道按照函数用法使用。如果能很好的区分两者,相信大家对于C语言和UNIX系统(包括LINUX)有更深入的了解。在网上查找了一些资料,但是感觉不够全面,一些答案只是从某个角度阐述,所以让人觉得,这个也对,那个也对。但到底谁的表述更正确呢?其实都是对的,只是解释的视角不同罢了。下面结合个人的理解做一些梳理。1. 来源从来源的角度看,两者能很好的区分开,这也是两者最显而易见的区别:open是UNIX系统调用函数(包括LINUX等原创 2020-08-08 13:24:02 · 251 阅读 · 0 评论 -
Liunx文件的IO操作
open函数包含所需头文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>函数原型int open(const charpathname,int flags);int open(const charpathname,int flags,mode_t mode);参数说明:其中参数一为文件的路径flags: O_RDONLY: 只读打开O_WRONLY: 只写打开O_R原创 2020-08-08 12:36:40 · 174 阅读 · 0 评论