Linux学习三 常用功能

一 Linux 信号

1.1 Linux 异步通知

通过异步通知信号来结束相应进程,如kill -15 xxxCtrl + C来结束响应进程。

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <stdatomic.h>

// 全局标志位
atomic_int signal_received = 0;

// 信号处理函数
void signal_handler(int signum) {
    // 设置标志位;在APP中关闭资源后推出进程
    signal_received = signum;

	// exit(0);		// 使用 exit 或 __exit 会在该函数结束后直接退出进程
}

int main(int argc, char *argv[]) {
    // 注册信号处理函数
    signal(SIGTERM, signal_handler);  // 捕获 SIGTERM(信号 15)
    signal(SIGINT, signal_handler);   // 捕获 SIGINT(信号 2,Ctrl+C)

    // 模拟程序运行
    while (1) {
        // 检查标志位
        if (signal_received != 0) {
            printf("Received signal %d, cleaning up...\n", signal_received);

            // 执行清理操作
            // 1. 关闭文件
            // 2. 关闭 TCP 连接
            // 3. 释放资源
            // ...

            printf("Cleanup complete, exiting...\n");
            break;  // 退出循环
        }

        // 模拟程序工作
        printf("Running...\n");
        sleep(1);
    }

    return 0;
}

二、CAN 参数

root@E2100:/# ip -details link show can1
3: can1: <NOARP,ECHO> mtu 72 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 10
    link/can  promiscuity 0 allmulti 0 minmtu 0 maxmtu 0
    can <FD> state STOPPED (berr-counter tx 0 rx 0) restart-ms 0
          bitrate 1003102 sample-point 0.744
          tq 10 prop-seg 36 phase-seg1 36 phase-seg2 25 sjw 1 brp 2
          rk3576_canfd: tseg1 1..128 tseg2 1..128 sjw 1..128 brp 1..256 brp_inc 2
          dbitrate 2006204 dsample-point 0.714
          dtq 71 dprop-seg 2 dphase-seg1 2 dphase-seg2 2 dsjw 1 dbrp 14
          rk3576_canfd: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..256 dbrp_inc 2
          clock 196608000 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 65536 parentbus platform parentdev ff330000.can

`` tq 10 prop-seg 36 phase-seg1 36 phase-seg2 25 sjw 1 brp 2 ``
`` 波特率 = clock / (seg + seg1 + seg2 + sjw) / brp ``
`` 可以参考STM32F4数据手册 24.7.7 章节 ``

CAN 控制器时钟(如 196.608 MHz)需分频生成目标波特率,但分频系数必须为整数。

网络配置:

eth2exists=$(ls /sys/class/net | grep -w "eth2")
if [ -n "$eth2exists" ]; then
    ifconfig eth0 192.168.3.30
    ifconfig eth1 192.168.1.30
    ifconfig eth2 192.168.2.30
    echo "eth2 exist ; set ip addr 192.168.3.30"
else
    ifconfig eth0 192.168.1.30
    ifconfig eth1 192.168.2.30
    echo "eth2 not exist"
fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值