linux应用
linux应用开发
StrartFromSZ
这个作者很懒,什么都没留下…
展开
-
给老 ubuntu 服务器 (非 root 用户) 安装 vim
由于公司服务器 vim 太老, 而自己想要用新版的 vim, 但没有去 root 权限没法安装, 也没法编译 vim 源码. 于是在虚拟机下安装 vim 再拷贝到服务器.找个与服务器相同的 linux 版本安装到虚拟机上, 如服务器是 ubuntu18.04 的就在虚拟机上安装ubuntu18.04, 然后开始编译源码, 编译源码可以参考Ubuntu 18.04 下编译安装 vim 8.1.编译前要特别注意configure 时, 要配置 `-prefix=` 为服务器上所要拷贝至的路径, 因...原创 2021-11-06 23:50:08 · 722 阅读 · 0 评论 -
一个解析日志的脚本
#!/usr/bin/env python3#coding=utf-8import unicodedataimport osimport reimport sysimport subprocesscurrent_path = os.getcwd()#print(current_path)with os.popen('find $PWD -maxdepth 1 -type d -name "*chi-cdk"') as chi_fd: chi_path = chi_fd.rea原创 2021-04-08 11:52:25 · 169 阅读 · 2 评论 -
两子数组交集问题
同事刷题:给定一个元素,类型为小写字符串数组, 请计算两个没有相同字符的子数组的长度乘积的最大值, 若果没有符合条件的子数组, 返回0.输入条件: 输入为半角逗号分隔的小写字符串数组, 数组长度[2,100], 字符串长度[0,50]#!/usr/bin/env python3import rearr=[]arr = input('Enter the str: ')# get between [2,100] num of lowcase chars splittd with','whil原创 2021-04-03 23:42:02 · 397 阅读 · 0 评论 -
python3 中英文标点转换
工作中遇到需要把中文标点转化成英文标点的需求,#coding=utf-8import unicodedataimport osimport redef punctuation_mend(string): #输入字符串或者txt文件路径 table = {ord(f):ord(t) for f,t in zip( u',、。!?【】()%#@&1234567890“”‘’', u',..!?[]()%#@&12原创 2021-04-03 19:48:26 · 1453 阅读 · 0 评论 -
非root用户安装命令
bash 命令行配置提示符PS1='\[\e[90m\][\[\e[33;1m\]\w\[\e[90m\]]$\[\e[0m\] \[\e[37m\]'工具 The Silver Searcher & ripgrep & vim8.2服务器环境 [~]$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Relea.原创 2020-10-29 21:15:21 · 866 阅读 · 0 评论 -
ubuntu18.04 64位运行32位的arm-openwrt-linux-gnueabi-gcc
问题:在ubuntu18.04上用32位的工具链交叉编译程序是发现工具链不可用:/bin/arm-openwrt-linux-gcc command not found/bin/arm-openwrt-linux-gcc: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directoryMakefile:14: recipe for ta..原创 2020-07-17 19:16:48 · 2188 阅读 · 0 评论 -
已知一系列依赖关系, 求解并输出正常的服务器
am-an(m, n为小于3000的正整数), 表示am依赖于an, 若an损坏, 则am也不能工作,现在输入一系列am-an的依赖关系, 以 ‘,’ 分割, 并输入损坏的部件ax, 按升序输出正常的ay.本题输入输出严格遵循要求, 涉及到字符串处理, 排序等/* * @author: garret * @date: 2020/07/15 * @comipler: gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 */#include <stdio.h&原创 2020-07-15 17:50:46 · 499 阅读 · 0 评论 -
局部跳转和非局部跳转
局部跳转goto虽然很多书籍对goto建议 “谨慎使用, 或者根本不用”, 然而当一个函数的多个分支需要一个统一出口时, goto语句就非常必要了. Linux之父Linus在Linux中大量使用goto, 也是在启示着我们可以合理使用goto语句.在高通的qsdk中的time_genoff_qmi.c就有这么一段code.int time_genoff_operation(time_genoff_info_type *pargs){ if (connect(sock_id, .原创 2020-07-04 23:09:32 · 313 阅读 · 0 评论 -
vfork fork clone execv
clone是Linux为创建线程设计的(虽然也可以用clone创建进程)。所以可以说clone是fork的升级版本,不仅可以创建进程或者线程,还可以指定创建新的命名空间(namespace)、有选择的继承父进程的内存、甚至可以将创建出来的进程变成父进程的兄弟进程等等。clone和fork的调用方式也很不相同,clone调用需要传入一个函数,该函数在子进程中执行。此外,clone和fork最大不同在于clone不再复制父进程的栈空间,而是自己创建一个新的。fork()是将父进程的全部资源复制给了子进程。而原创 2020-07-03 20:27:33 · 220 阅读 · 0 评论 -
musl-libc 和 glibc
客户反馈说在编译器下找不到libpthread,libpthread is integrated into musl libc, 在musl-libc中, libpthread库整合到 libc 库中用objdump -Tt libc.so.1 | grep pthread_create确认原创 2020-07-03 19:53:11 · 3173 阅读 · 3 评论 -
带缓冲的IO和不带缓冲的IO
文件描述符:文件描述符是一个小的非负整数,是内核用来标识特定进程正在访问的文件标准输入/输出/出错:shell为每个程序打开了三个文件描述符,STDIN_FILEON,STDOUT_FILEON,STDERR_FILEON,默认这三个文件描述符都链向终端不带缓冲的IO:函数open read write lseek close提供了不用缓冲的IO。这些函数都使用文件描述符ssize_t read(int fd,void *buf,size_t count)从fd标识的文件中一次读取count字转载 2020-06-16 12:02:59 · 459 阅读 · 0 评论 -
sync同步
传统的UNIX系统实现在内核中设有缓冲区高速缓存和页高速缓存, 大多数磁盘I/O都通过缓冲区进行. 当我们向文件写入数据时, 内核通常先将数据复制到缓冲区中, 然后排入队列, 晚些的时候再写入磁盘. 这种方式被称为延迟写(delayed write).通常, 当内核需要重用缓冲区来存放其他磁盘数据时, 它会把所有延迟写数据写入磁盘. 为了保证磁盘上实际文件系统与缓冲区中内容的一致性, UNIX系统提供了sync, fsync和fdatasync三个函数.syncsync只是将所有修改过的块缓冲区排原创 2020-06-16 11:06:53 · 1293 阅读 · 0 评论 -
linux读写api
read write#include <unistd.h>ssize_t read(int fd, void *buf, size_t nbytes); Returns: number of bytes read, 0 if end of file, −1 on errorssize_t write(int fd, const void *buf, size_t nbytes); Returns: number of by.原创 2020-06-07 01:01:19 · 160 阅读 · 0 评论 -
linux中block和page的区别
What is the difference between pages and blocks?A block is the smallest unit of data that an operating system can either write to a file or read from a file.What exactly is a page?Pages are used by some operating systems instead of blocks. A page i..转载 2020-06-04 10:02:52 · 1867 阅读 · 0 评论 -
FILE对象指针(流)和文件描述符相互转换
有时候用open系统调用打开一个文件, 返回一个文件描述符(fd), 然后我们可用用read, write等可以操作文件描述符的API操作这个fd. 但是后面你可能会碰到需要用到这个文件的FILE对象指针的API, 如fwrite, fprintf等, 这时候如果不方便对这个文件关闭后再用库函数fopen打开这个文件以得到FILE对象指针, 那么怎么可以在不关闭fd的情况下得到该文件的FILE对象指针呢? 这时候用fdopen库函数即可,FILE *file = fdopen(fd, "w");反之也可原创 2020-06-06 15:07:34 · 872 阅读 · 0 评论