Linux系统编程
文章平均质量分 70
JXES智能生态系统
And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.
还有最重要的是, 你要有勇气去听从你直觉和心灵的指示——它们在某种程度上知道你想要成为什么样子,所有其他的事情都是次要的。
Stay Hungry. Stay Foolish.
求知若饥,虚心若愚。
展开
-
在虚拟机上扩容Ubuntu原来分区大小
由于在虚拟机上安装操作系统,常常会遇到虚拟硬盘空间不足的问题,这主要是由虚拟机下有一个不足导致,即使把虚拟硬盘上的文件删除了,但硬盘不空间不会因此收回。针对这个问题,我们常常需要给虚拟硬盘扩容,下面以virtualbox为例,介绍一个工具gparted。扩容虚拟硬盘使用virtualbox的VBoxManage.exe工具扩容:D:\Program Files\Oracle\VirtualBox>VBoxManage.exe E:\VirtualBox\oe-core\oe-core.vdi -原创 2022-05-08 19:57:51 · 1143 阅读 · 1 评论 -
如何在ubuntu terminal及vim使用solarized主题
在ubuntu上想使用solarized 主题的vim,仅仅是安装solarized插件是不够的,需要同时对ubuntu的terminal的主题也做solarized的配置。说明:ubuntu中如果只修改vim使用solarized配色,会因terminal配色和vim配色叠加造成亮灰色,因此terminal也需要修改成solarized配色:1.如果没有安装git,先通过sudo apt-get原创 2017-11-03 14:15:13 · 4814 阅读 · 0 评论 -
wait和waitpid
故事当一个里程终止时,可以是正常的终止,也可以是不正常的终止,linux kernel会发一个SIGCHLD的signal给parent。终止一个child是一个异步的事件,所以parent必须要能够处理child的事件,这就需要wait或waitpid来帮忙实现。wait或waitpid可以Block, if all of its children are still runningRetur原创 2017-10-16 16:09:18 · 651 阅读 · 0 评论 -
linux process退出方式
在linux系统里,进程退出通常有5种常见的方式:直接执行return语句,比如在main函数里,直接用return退出,这与调用exit方法是等价的直接调用exit,这是ISO C里定义的,包含所有的exit handlers,这些handlers是由atexit注册过的;关掉所有的standard I/O streams调用_exit或_Exit方法,在ISO C里,_Exit结束进程时并原创 2017-10-16 15:51:24 · 1567 阅读 · 0 评论 -
linux系统下的Buffer
write, fwrite,printf等它们都会与buffer有关,有时向日志中写data,第二天发现data没有保存完整,出现这个问题,都是buffering的问题,下面从linux系统来分析buffering。buffering种类non-buffering 无缓存,写入数据立即写入line-buffering 遇到newline,即换行符时写入full-buffering buf原创 2017-10-12 16:49:08 · 1008 阅读 · 0 评论 -
C语言下的setjmp longjmp(C 语言异常处理)
在C 语言中,我们不能使用 goto 语句来跳转到另一个函数中的某个 label 处;但提供了两个函数——setjmp 和 longjmp来完成这种类型的分支跳转。后面我们会看到这两个函数在处理异常上面的非常有用。setjmp 和 longjmp 使用方法在一个函数内进行跳转,可以使用 goto 语句(几乎所有国内教材都一刀切地教大家尽量不要使用它,但在我看来,这根本不是语言的问题,而是使用该语言原创 2017-10-11 17:58:40 · 654 阅读 · 1 评论 -
fopen/freopen/fdopen
fopen是用得比较多的,通常是打开文件读写。另外两个用得不多,但在系统编程时会用到。freopen通常与stdin,stdout,stderr一起用,有点重定向的味道FILE *freopen(const char *restrict pathname, const char *restrict type,FILE *restrict fp);例1 94 int a;原创 2017-09-21 15:16:03 · 628 阅读 · 0 评论 -
getspent、setspent和endspent运行出错
下面这代码本身没有任何问题,只是运行时报了段错误。 13 #include <shadow.h> 22 int main(int argc, char **argv) 23 {199 struct spwd *ptr = NULL;200 char name[] = "jack";201 setspent();202 while ((ptr = get原创 2017-09-29 11:17:07 · 615 阅读 · 0 评论 -
chdir,getcwd
1. chdir 1 #include "apue.h" 2 3 int 4 main(void) 5 { 6 if (chdir("/tmp") < 0) 7 err_sys("chdir failed"); 8 printf("chdir to /tmp succeeded\n"); 9 exit(0)原创 2017-09-20 17:18:53 · 467 阅读 · 0 评论 -
Unix环境高级编程第三版源码编译错误
编译书本上的源代码遇到如下问题:1. systype.shapue.3emakeforiinlibintrosocketsadviodaemonsdatafilesdbenvironfileiofilediripc1ipc2procptyrelationsignalsstandardsstdiotermiosthreadctlthreadsprinterexercises;do (cd make原创 2017-09-20 14:23:44 · 763 阅读 · 0 评论 -
Pthread导致的memory leak
今天在解决客户的一个内存泄露的问题,客户提供了source code,但从代码语法,代码结构上的检查,都没有发现什么问题,编码风格还算整洁,那为什么还有Memory Leak?客户代码有一个特点,使用了多线程,而且用得还比较频繁,而且初看代码,也没有问题,线和有创建pthread_create, 都会有退出pthread_exit,那问题在那里,于是,就查看了下linux的api手册,仔细研究了下l原创 2017-09-11 13:11:57 · 1690 阅读 · 0 评论 -
bash,dash以及执行shell脚本的方法
最近在编译平台SDK时,使用环境是ubuntu16.04,开始通过执行shell脚本配置SDK的编译环境,整个过程刚开始就夭折了,原因是ubuntu的默认shell使用的是dash,而SDK的shell脚本是基于bash而写,自然刚开始执行就失败。 首先,可能会想到把shell脚本中默认指定的shell修改为bash,通常在shell脚本开头都会有如下这样一句指明shell:#!/bin/sh这里原创 2017-07-10 11:43:04 · 2639 阅读 · 0 评论 -
sleep与usleep
sleepunsigned sleep(unsigned seconds); 单位是秒s,sleep(1)为延迟1秒usleepvoid usleep(int micro_seconds); 单位是微秒us, usleep(1)为延迟1微妙原创 2017-07-17 11:29:31 · 789 阅读 · 0 评论 -
VIM类似source insight的用法
install ctagsctags是taglist插件需要的 sudo apt install ctags安装插件taglist https://vim.sourceforge.io/scripts/script.php?script_id=273 在vim官方插件里有,下载后主要就是plugin和doc这两个文件SrcExpl http://www.vim.org/scripts/s原创 2017-07-03 15:36:44 · 1759 阅读 · 0 评论 -
system、wait,waitpid,fork使用时注意
system,waitpid使用时的坑system这个函数可以用来执行shell命令,这也是我们平常使用比较多,或者说比较喜欢使用的地方,但使用时也有很多坑等着你。下面这段代码大家应该不难理解,作用是忽略掉SIGCHLD这个信号量。/* Ignore SIGCHLD to avoid zombie process */ if (signal(SIGCHLD, SIG_IGN) == SIG_原创 2017-06-26 17:34:10 · 1506 阅读 · 1 评论 -
Windows 10 将 Ubuntu作为它的APP
本文转自https://www.microsoft.com/en-gb/store/p/ubuntu/9nblggh4msv6?ocid=badge&rtc=1使用windows10的用户有福了,可以不用再安装vbox,vmware之类的虚拟机,而直接安装一个APP就可以使用ubuntu16.04 LTS版本的功能了。可以直接在microsoft的app store直接下载安装,上面那个网址即是。不原创 2017-07-13 12:09:06 · 1051 阅读 · 0 评论