愿星光伴随你左右


  • 首页

  • todo

  • 思考

  • life

  • food

  • OS

  • lua

  • redis

  • Golang

  • C

  • TCP/IP

  • ebpf

  • p4

  • OpenVPN

  • IPSec

  • L2TP

  • DNS

  • distributed

  • web

  • OpenWRT

  • 运维

  • Git

  • 鸟哥的私房菜

  • IT杂谈

  • 投资

  • About Me

  • 友情链接

  • FTP

  • 搜索
close

永安湖城市森林公园-春游

时间: 2024-03-23   |   分类: 生活   life   成都     |   阅读: 144 字 ~1分钟

基本信息

  • 湖+小山+草坪地+步行道组成的休闲型公园,适合一家老小,情侣,好友游玩;
  • 公园入口有停车场,周末车多需等位,可按指示牌停到附近的地下停车场(free),路边随意停车有比较高的罚款风险;
  • 公园里面有湖,有草坪,可以带娃抓蝌蚪,放放风筝,再支一个帐篷,巴适得板;
  • 园区内有自动售卖机;

浏览图

阅读全文 »

PIPE 管道

时间: 2024-03-20   |   分类: c     |   阅读: 1302 字 ~3分钟

官方参考手册

https://manpages.courier-mta.org/htmlman7/pipe.7.html

示例代码

// O_NOATIME 宏定义的扩展要求
#define _GNU_SOURCE 1
#include <fcntl.h>
#undef _GNU_SOURCE

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <linux/unistd.h>
#include <assert.h>
#include <limits.h>

static int pip[2];

void 
sleep_select(int sec)
{
    struct timeval timeout;

    timeout.tv_usec = 0;
    timeout.tv_sec = sec;

    select(0, NULL, NULL, NULL, &timeout);
}

static void 
*thread_read(void *userdata)
{
    char data[5] = {0};
    int ret;

    printf("p0: %d\n", pip[0]);
    printf("p1: %d\n", pip[1]);

    while (1)
    {
        fd_set fds;
        FD_ZERO(&fds);
        FD_SET(pip[0], &fds);
        struct timeval timeout = {10, 0};
        ret = select(pip[0] + 1, &fds, NULL, NULL, &timeout);
        if (ret < 0)
        {
            printf("select error\n");
            break;
        }
        else if (ret == 0)
        {
            // printf("no fd ready\n");
            continue;
        }
        else
        {
            if (FD_ISSET(pip[0], &fds) > 0)
            {
                read(pip[0], data, 5);
                printf("data: %s\n", data);
            }
        }
    }
}

static void *
thread_write(void)
{
    printf("thread_write\n");
    char data[] = "pipe-data";
    while (1)
    {
        sleep_select(1);
        write(pip[1], data, sizeof(data));
        /* 单次写入的数据长度超过 PIPE_BUF 时, 内核不保证写入的原子性*/
        if (sizeof(data) > PIPE_BUF)
        {
            printf("warn data is too long\n");
        }
    }
}

int main(int argc, char *argv[])
{
    char data[] = "data";
    pthread_t id;
    if (pipe(pip))
    {
        printf("pipe error\n");
        exit(-1);
    }

    printf("p0: %d\n", pip[0]);
    printf("p1: %d\n", pip[1]);

    fcntl(pip[0], F_SETFL, O_NOATIME); /* 提高性能 */
    fcntl(pip[1], F_SETFL, O_NOATIME);

    if (pthread_create(&id, NULL, thread_read, NULL))
    {
        printf("create thread error\n");
        exit(-1);
    }

    printf("pthread id = %x\n", id);
    pthread_create(&id, NULL, thread_write, NULL);

    // signal(SIGUSR1, mysignal);
    while (1)
    {
        sleep_select(2);
    }

    pthread_join(id, NULL);
}

基本介绍

无名管道(4):通过管道同步进程
通过管道同步进程
管道其实就是一个文件

PIPE通信应用
通过管道同步进程
管道自带同步互斥机制:
管道的内核实现:fs/pipe.h
通过内核的锁、等待队列等机制实现
Write操作可能会阻塞进程
当内存缓冲区已满被读进程锁定
直到所有数据被写入到管道为止
Read操作进程可能会阻塞进程
读进程可以休眠在等待队列
直到所有子进程都关闭了管道的写入端描述符为止
父进程的写入端描述符也要关闭,否则父进程读管道时也会被阻塞
只有当所有的写端描述符都已关闭,且管道中的数据都被读出,对读端描述符调用read函数才会返回0(即读到EOF标志)
当所有的读取端和写入端都关闭,管道才能被销毁
管道缓冲区设置
管道缓冲区
管道对应的内存缓冲区大小
PIPE_BUF的容量是有限的:默认是65536字节
在不同OS下PIPE_BUF大小设置不同:在limits.h头文件中定义
写入管道的数据超过PIPE_BUF大小,内核会分割几块传输
最大值/proc/sys/fs/pipe-maxsize
查看打开的管道文件:cat /proc/PID/fd
设置缓冲区大小
特权用户:可以修改上限值
设置缓冲区大小:fcntl(fd, F_SETPIPE, size)

参考资料连接

阅读全文 »

三星观景平台-双流-爬山

时间: 2024-03-17   |   分类: 生活   life   成都     |   阅读: 127 字 ~1分钟

基础信息

  • 以看油菜花和爬山锻炼为主
  • 导航点: 河山村村委会,不要导航到观景平台(直接开上去了,还爬个锤子山)
  • 找一个路边 free 或者10RMB 的停车点
  • 路边有饮料、豆花等售卖
  • 基本上是爬台阶,所以带娃要心里准备,适合锻炼身体,约会

浏览相片

从这里开始爬

阅读全文 »

辣椒炒肉

时间: 2024-03-16   |   分类: 生活   life   food   美食     |   阅读: 234 字 ~1分钟

料

  • 将梅花肉(枚头肉)切薄片后,加酱油、少量盐腌制
  • 将购买的薄辣椒切片(大小切匀,不然炒的时候有些还没熟,有些炒过了)
  • 准备好豆豉和大蒜(切片)

烹饪

  1. 将辣椒倒入锅中中小火翻炒,炒软、爆香,不可炒过、没熟,乘出前加少量盐
  2. 将植物油(没有也可用猪油)烧热后加入大蒜、豆豉爆出香味
  3. 将炒香的辣椒和腌制好的猪肉倒入锅中翻炒(大火),视情况加入酱油调色、盐调味
  4. 辣椒和猪肉倒入锅后,判断下油量,如果多了则倒掉(油多了不好吃),少了则加点油),不好判断时,开始多点油,后面倒掉即可
  5. 烧好后出锅即可

新津-农博园-油菜花

时间: 2024-03-16   |   分类: 生活   旅游   life   成都     |   阅读: 90 字 ~1分钟

基础信息

  • 非常大一片油菜花地,有好几种颜色的油菜花,没啥其它的景色,不值得专门跑一趟;
  • 最好自驾,顺带浏览其它景点;
  • 农博园内有售卖小吃和零食的,有可租的电动车,也可以坐观光车;

浏览相片

阅读全文 »

东安湖游玩

时间: 2024-03-10   |   分类: 生活   旅游   life   成都     |   阅读: 117 字 ~1分钟

基础信息

  • 非常大的一个湖+湿地+步行道的公园,新建的园,干净,整洁;
  • 适合谈恋爱的情侣(租一个多人骑的车子);
  • 园内购物不方便(没见小吃摊),建议自带水果(有卖水的);
  • 地铁可直达;
  • 没看到什么小孩耍的地方(没逛完全园区,可能遗漏了);

浏览相片

阅读全文 »

成都美食推荐

时间: 2024-03-08   |   分类: 生活   life   food   美食   成都     |   阅读: 108 字 ~1分钟

说在最前面

个人认为还不错的美食,价格亲民,口味因人而异,推荐不分先后

大众点评上的评价更为丰富

点心

  • 鲍师傅糕点
  • 点都德

西北菜

  • 新疆艾力达达美味-双流机场
  • 拾张新疆凉皮

川湘菜

  • 华阳人家麻辣鱼总店
  • 黑石乡村柴火鸡(柴火烧的,物美价廉)

万州烤鱼

时间: 2024-03-03   |   分类: 生活   life   food   美食     |   阅读: 521 字 ~2分钟

主要步骤

  • 购买草鱼(体型修长,黑背,白肚,在商户那要求背部开刀),不喜欢吃鱼头和鱼尾的可以去掉,烤箱比较小的,去掉鱼头和鱼尾,这样可以放得下比较大的鱼(烤箱和烤鱼炉大的忽略)。
  • 鱼改刀:鱼脊打断防止烤制时形变,切1 字形花刀,2/3 处。
  • 腌制鱼: 切一个洋葱,一大把葱(切成6CM的条),10CM的姜切成丝,混合后放到鱼背上,倒上适量料酒(涂抹一遍鱼的量即可),将上述混合物在鱼背,鱼腹反复抹匀,腌制30分钟(用保鲜膜密封)。
  • 炒制底料:将植物油加热到五成熟,将干辣椒(剪断),过油后捞出,将油完全加热,倒入花椒,豆豉,生姜片,蒜,烤鱼配料(见下面链接),豆瓣酱,鸡精,前面的干辣椒,炒香后捞出
  • 预处理配菜:将配菜预处理(放入热水煮熟),将上述底料和预制菜最后一起煮,使配菜入味。
  • 烤鱼:将烤箱预热,把腌好的鱼去掉水份后(厨房用纸),放到烤箱烤干再用毛刷刷植物油(预防烤糊),放到烤箱内烤30分钟(上下管230°),中途不断刷油烤到鱼外焦内嫩(外表金黄)。
  • 最后煮鱼:鱼放到盘子中间,将混合料均匀的撒到鱼上,再根据个人口味放入泡椒(若底料偏辣可不放)或者其它配料(感觉自己口味添加即可)
  • 享受美食:煮熟后即可享受啦;

相关物料购买链接

  • 烤鱼底料
  • 烤鱼炉:
  • 酒精:
  • 配料参考
2 3 4 5 6 7 8 9 10

日志
分类
标签
RSS 订阅
GitHub
© 2009 - 2025
粤ICP备2021068940号-1 粤公网安备44011302003059
0%