ElfBoard

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
  • 飞凌嵌入式ElfBoard-线程的创建与终止之创建线程
    pthread_create()函数能够在进程中创建一个线程,创建出来的新线程是主线程的子线程;需要注意的是,新线程与主线程之间的关系并非父子关系,而是并行执行的多个线程。 1.头文件 #include <pthread.h> 2.函数原型 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(
  • 飞凌嵌入式ElfBoard-线程的创建与终止之创建和终止线程示例
    1.示例:创建和终止线程 #include <stdio.h> #include <stdlib.h> #include <pthread.h> void *thread_function(void *arg) { printf("Thread is running\n"); int *result = malloc(sizeof(int)); *result
  • 飞凌嵌入式ElfBoard-线程的创建与终止之回收线程
    进程需要通过wait()系列函数等待资源回收,线程亦是如此。 pthread_join() 会阻塞调用线程,直到被等待的线程终止。这使得主线程可以确保所有子线程都完成其任务。通过 pthread_join,主线程可以获取子线程的返回值,允许在多线程间进行信息传递。pthread_join会在子线程结束后清理其资源,防止线程变成“僵尸线程”。 1.头文件 #include <pthread.h
  • 飞凌嵌入式ElfBoard-线程的创建与终止之终止线程
    pthread_exit()函数能够终止调用它的线程,而不影响其他线程的运行。 1.头文件 #include <pthread.h> 2.函数原型 void pthread_exit(void *retval); 3.参数 retval:线程的返回值,可以是任何指针类型。如果传递 NULL,则表示没有返回值。 4.返回值 无。 5.注意事项 1)pthread_exit() 仅终止调用
  • 飞凌嵌入式ElfBoard-多线程结构
    任何一个进程都包含一个主线程,只有主线程的进程称为单线程进程,既然有单线程进程,那自然就存在多线程进程,其它新的线程是由主线程创建的,主线程通常会在最后执行清理子线程的工作; 进程创建多个子进程,本质上便是多个单线程进程,可以实现并发处理多个任务;一个多线程进程同样也可以实现并发处理多任务的需求,既然一个进程已经可以创建多个子进程并发处理多个任务,为什么还需要使用多线程呢? 多进程程序结构和多线程
  • 飞凌嵌入式ElfBoard-进程间的通信之信号量
    信号量(semaphore)是进程和线程间控制共享资源访问的重要机制,用于同步操作。与其他进程间通信(IPC)方式不同,信号量本质上是一个计数器,用来跟踪资源的可用数量,并通过增减信号量的值来控制对共享资源的访问权。信号量的值可以理解为资源的数量,信号量为 0 时表示资源已被占用,当信号量为正数时表示资源可用。 1.在 Linux 中,信号量的主要作用 控制共享资源的访问:信号量充当标志,控制对资
  • 飞凌嵌入式ElfBoard-进程间的通信之共享内存
    共享内存是一种高效的 IPC 方法,允许不同的进程在内存中共享数据。通过将一块内存区域映射到多个进程的地址空间,这些进程可以直接读写这块内存,从而实现数据的快速交换。 1.共享内存的特点 高效性:共享内存是所有 IPC 机制中效率最高的,因为它允许多个进程直接访问同一块内存区域,避免了数据复制的开销。 创建与访问:由一个进程创建共享内存段(通常使用 shmget),其他进程通过共享内存标识符来访问
  • 飞凌嵌入式ElfBoard-进程间的通信之信号的发送raise
    raise()函数也是发送信号函数,kill()是向指定pid发送信号,raise()函数则只发送信号给当前进程,而不向其他进程发送信号;raise(sig)等价于kill(getpid(),sig)。 1.头文件 #include <signal.h> 2.函数原型 int raise(int sig); 3.参数 sig:需要发送的信号。 4.返回值 成功时,返回 0。失败时,返回
  • 飞凌嵌入式ElfBoard-进程间的通信之信号的发送kill
    与shell中的 kill 命令相类似,一个进程可通过 kill()向另一个进程发送信号,之所以选择kill作为术语是因为早期的UNIX实现中大多数默认行为是终止进程; 1.头文件 #include <sys/types.h> #include <signal.h> 2.函数原型 int kill(pid_t pid, int sig); 3.参数 pid:用于标识一个或者
  • 飞凌嵌入式ElfBoard-进程间的通信之信号的发送alarm
    alarm()其实是一个配置定时器的函数,当定时器溢出的时候,内核会向进程发送SIGALRM信号。 1.头文件 #include <unistd.h> 2.函数原型 unsigned int alarm(unsigned int seconds); 3.参数 seconds:以秒为单位设置定时时间,如果在seconds秒时间内再次调用了alarm()函数设置了新的闹钟,则会将之前的覆盖
  • 飞凌嵌入式ElfBoard-进程间的通信之匿名管道
    pipe函数用于创建一条匿名管道,在具有亲缘关系的进程(如父子进程)之间进行通信,pipe() 函数会生成一对文件描述符,分别用于管道的读和写操作;由于管道传输是半双工的,数据只能在单个方向上流动,父进程往子进程传数据时,父进程的管道读端和子进程的管道写端都可以先关闭。 1.头文件 #include <unistd.h> 2.函数原型 int pipe(int pipefd[2]);
  • 飞凌嵌入式ElfBoard-进程间的通信之命名管道
    命名管道(FIFO)与匿名管道(PIPE)的不同的地方在于,命名管道在文件系统中具有一个名字,可以使得不相关的进程也能通过该名字访问管道。 在Linux中可以使用mkfifo命令和mknod命令创建命名管道;mkfifo专用于创建命名管道(FIFO)。mknod命令用于创建设备文件,字符设备,块设备或FIFO。 mkfifo 命令非常简单,用法如下: mkfifo <fifo_name&gt
  • 飞凌嵌入式ElfBoard-进程间的通信之信号类型
    信号分为可靠信号和不可靠信号(实时信号与非实时信号),主要区别在于信号的可靠性、排序和丢失情况。 Linux中标准信号(不可靠信号、非实时信号)的编号范围为1~31,这前面31个信号都有特殊的名字,有着相对应的特殊事件;Linux的信号机制是从UNIX系统中继承过来的,但是早期UNIX 系统中的信号机制比较简单和原始,后来逐渐暴露出来了一些问题,这些不可靠信号不支持排队(处理信号的时候又来了新的信
  • 飞凌嵌入式ElfBoard-进程间的通信
    进程间通信(interprocess communication,简称 IPC)是指在操作系统中,不同进程之间的数据交换和消息传递的方式。IPC提供了多种机制来实现此功能,进程间通信包含信号、管道、消息队列、信号量、共享内存、和套接字等方式,每种机制适用于不同的场景。 ⚫信号:可以异步通信,并且具有轻量级的特点,但是不能传递复杂的数据,只能携带少量信息。 ⚫管道:普通管道只能在父子进程之间单向通信
  • 飞凌嵌入式ElfBoard-进程间的通信之信号处理sigaction
    sigaction()函数可以设置各种属性在调用信号处理器程序时的行为,并且还允许在获取信号进行处理的同时不改变信号 1.头文件 #include <signal.h> 2.函数原型 int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 3.参数 signum:参数指定需要捕获
  • 飞凌嵌入式ElfBoard-进程间的通信之信号处理signal
    signal()主要是用于捕获信号,改变进程中对信号的默认行为。信号的处理是异步的,也就是说,不论程序当前正在执行什么代码,当信号到达时,信号处理函数都会立即执行。 1.头文件 #include <signal.h> 2.函数原型 typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_
  • 飞凌嵌入式ElfBoard-进程间的通信之信号处理pause
    pause()可以让进程暂停运行,当进程被挂起时,它不会占用 CPU 资源,直到某个信号(如 SIGINT 或 SIGTERM)被发送给该进程。 1.头文件 #include <unistd.h> 2.函数原型 int pause(void); 3.参数 无。 4.返回值 pause() 在成功时不会返回。进程接收到信号并恢复执行,pause() 将返回 -1,并设置 errno为 E
  • 飞凌嵌入式ElfBoard-进程的基本操作之进程等待wait
    wait()函数可以获取子进程的退出状态。当父进程调用 wait() 时,它会阻塞,直到其中一个子进程终止。此时,终止的子进程的退出状态会被返回给父进程,父进程可以通过提供的状态参数来检查子进程是正常退出还是异常终止。 1.头文件 #include <sys/types.h> #include <sys/wait.h> 2.函数原型 pid_t wait(int *wsta
  • 飞凌嵌入式ElfBoard-进程的基本操作之进程等待waitpid
    waitpid()提供了更灵活的选项,允许父进程等待特定的子进程终止,或非阻塞地查询子进程状态,进一步增强了进程管理的灵活性。比如可以指定等待某个pid的子进程、提供一个非阻塞版本的wait()功能等,这对处理多个子进程的情况更加友好。 1.头文件 #include <sys/types.h> #include <sys/wait.h> 2.函数原型 pid_t waitp
  • 飞凌嵌入式ElfBoard-进程的基本操作之进程终止exit
    exit() 函数用于终止一个进程,并返回一个状态码给操作系统。这是标准C库中的函数,用于在进程完成任务后退出,释放资源并将控制权返回给操作系统内核。它的定义在 stdlib.h 中。 1.头文件 #include <stdlib.h> 2.函数原型 void exit(int status); 3.参数 status: 整型参数,表示进程退出时的状态码,通常用来告知操作系统或父进程当

正在努力加载...