
Linux系统编程
文章平均质量分 70
JXES智能生态系统
淘宝店铺:https://shop203908944.taobao.com/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
在虚拟机上扩容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 · 1382 阅读 · 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 · 4936 阅读 · 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 · 704 阅读 · 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 · 1673 阅读 · 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 · 1110 阅读 · 0 评论 -
C语言下的setjmp longjmp(C 语言异常处理)
在C 语言中,我们不能使用 goto 语句来跳转到另一个函数中的某个 label 处;但提供了两个函数——setjmp 和 longjmp来完成这种类型的分支跳转。后面我们会看到这两个函数在处理异常上面的非常有用。setjmp 和 longjmp 使用方法在一个函数内进行跳转,可以使用 goto 语句(几乎所有国内教材都一刀切地教大家尽量不要使用它,但在我看来,这根本不是语言的问题,而是使用该语言原创 2017-10-11 17:58:40 · 714 阅读 · 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 · 713 阅读 · 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 · 664 阅读 · 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 · 521 阅读 · 0 评论 -
Unix环境高级编程第三版源码编译错误
编译书本上的源代码遇到如下问题:1. systype.shapue.3emakeforiinlibintrosocketsadviodaemonsdatafilesdbenvironfileiofilediripc1ipc2procptyrelationsignalsstandardsstdiotermiosthreadctlthreadsprinterexercises;do (cd make原创 2017-09-20 14:23:44 · 836 阅读 · 0 评论 -
Pthread导致的memory leak
今天在解决客户的一个内存泄露的问题,客户提供了source code,但从代码语法,代码结构上的检查,都没有发现什么问题,编码风格还算整洁,那为什么还有Memory Leak?客户代码有一个特点,使用了多线程,而且用得还比较频繁,而且初看代码,也没有问题,线和有创建pthread_create, 都会有退出pthread_exit,那问题在那里,于是,就查看了下linux的api手册,仔细研究了下l原创 2017-09-11 13:11:57 · 1789 阅读 · 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 · 2764 阅读 · 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 · 912 阅读 · 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 · 1858 阅读 · 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 · 1625 阅读 · 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 · 1128 阅读 · 0 评论