Linux系统编程
时行居正
拙则勤,行则易
展开
-
localtime时间函数
背景: 需要将起始时间存储下来(要求格式为年-月-日-时:分:秒),以便下次进入循环时能与当前时间做比较。解决方案: 显然就是调用linux的localtime时间函数(参考文献1)的,于是乎写出了如下的代码#include #include #include #include #include struct tm* old_time;原创 2014-12-28 22:55:10 · 2814 阅读 · 0 评论 -
脚本执行
解释器的区别脚本常用的开头是“#!解释器”,其中“#!”是特殊的表示符,其后面跟着的是解释此脚本的解释器路径。解释器分为很多类。比如/bin/bash,/bin/sh,/bin/csh,/bin/perl,/bin/awk等等。GNU/Linux操作系统中的bin/sh本是bash的符号链接,但是bash过于复杂,所以有人有把NetBSD的ash移植到了Linux并更名为dash,并建转载 2017-09-09 12:56:33 · 874 阅读 · 0 评论 -
【转】调试段错误方法
0 引言 在调试应用程序时,可能因各种原因导致运行发生段错误。因此,有必要将堆栈调用信息打印出来,方便定位错误。1 方法 在glibc头文件execinfo.h中提供了三个函数获取当前线程的函数调用堆栈。0) int backtrace(void **buffer, intsize)该函数将获取的堆栈信息保存至buffer中,参数size则是表示buffer转载 2017-06-05 10:15:44 · 680 阅读 · 0 评论 -
[转] getopt getopt_long函数
转自http://blog.csdn.net/cashey1991/article/details/79428090 getopt#include int getopt(int argc,char *const argv[], constchar *optstring); extern char *optar转载 2017-04-10 23:06:21 · 284 阅读 · 0 评论 -
Linux串口读写
0 数据结构 串口的设置主要围绕在struct termios结构体的设置,其定义如下。struct termios { tcflag_t c_iflag ; /* 输入模式旗标 */ tcflag_t c_oflag ; /* 输出模式旗标 */ tcflag_t c_cflag ; /* 控制模转载 2017-03-21 11:27:59 · 2545 阅读 · 0 评论 -
[转] Linux进程状态
转自:http://blog.csdn.net/nilxin/article/details/7437671 本文主要针对Linux系统对进程状态的定义,不同OS可能有一定的差别。0 Linux进程状态:R (TASK_RUNNING),可执行状态 只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制转载 2016-11-29 15:37:27 · 368 阅读 · 0 评论 -
fork 函数
fork是由Linux内核提供的用于创建子进程的函数。理解其关键在于是一次调用两次返回,但两次返回是在不同的地址空间。0 返回值 对于父进程,其返回的是子进程的ID,而子进程返回的是0,(注意并不是父进程的ID)。原因在于,每个进程控制块数据结构中记录了两个ID,自身ID和父进程ID,显然,对于子进程而言,没有必要知道父进程ID,因为在fork后就记录在进程控制块中。但相反,对原创 2016-03-08 20:50:44 · 612 阅读 · 0 评论 -
dup与dup2() [转]
http://zyan.cc/book/linux_c/html/ch29s03.htmldup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。区分:如果两次open同一文件得到两个文件描述符,则每个描述转载 2016-03-07 20:29:12 · 329 阅读 · 0 评论 -
进程间通信——管道
1 管道 作为进程之间的通信手段之一,本质就是内核中的一块有限的缓冲区(64K字节,不同操作系统不一样),而且独立于文件系统,自己构成一个只存在于内存中的文件系统(可追踪内核的pipe.c存在于文件系统目录下)。其特点如下。1)半双工通信,同一时间数据只能从一端流向另一端;2)分为匿名管道和有名管道。而且对于匿名管道,只能用于具有共同祖先的进程之间通信,即父子进程或者父孙进原创 2016-03-07 20:02:52 · 291 阅读 · 0 评论 -
信号量——POSIX 与 System V的接口对比分析
一 POSIX 标准#include sem_t:信号量的数据结构 int sem_init (sem_t *sem, int pshared, unsigned int value)无名信号量(也称为基于内存的信号量)sem初始化,设置共享选项pshared,并指定一个整数类型的初始值为value。pshared参数控制着信号量的类型。如果 pshared的值是0,转载 2016-02-20 21:37:37 · 1321 阅读 · 0 评论 -
System V 与 POSIX
System V 以及POSIX 对信号量、共享内存、消息队列等进程之间共享方式提供了自己的解决方案。因此,在学习时难免存在疑惑,到底有什么区别,哪种方式更佳。经过网上搜索各种博客,做出简单的总结。历史 UNIX两大贡献者贝尔实验室和BSD,在进程之间通信侧重不同,前者基于内核对进程之间的通信手段进行了改进,形成了“System V IPC”,而后者则是基于网络形成了套接字。原创 2016-02-20 16:10:24 · 7038 阅读 · 0 评论 -
[转] linux下使用mmap实现进程间共享内存
转自:http://www.rigongyizu.com/linux-threads-mmap-share-memory/Linux下的mmap函数是把文件内容映射到一块内存(准确的说是虚拟内存)上,可以把对文件的操作转为对内存的操作,从而可以避免很多lseek()与read()、write()操作,非常适合于操作大文件或者频繁访问的文件。mmap一般的用途有:1.将某个真实的文件读入内存转载 2015-11-19 21:51:59 · 1583 阅读 · 0 评论 -
fread
[转自 http://blog.csdn.net/foxliucong/article/details/4736956和http://blog.csdn.net/abclixu123/article/details/8284680 ]1 fread(从文件流读取数据) 表头文件 #include 定义函数 size_t fread(void * ptr,si转载 2015-12-10 20:33:58 · 753 阅读 · 0 评论 -
[转] Linux system函数返回值
https://blog.csdn.net/cheyo/article/details/6595955例: status = system("./test.sh"); 1、先统一两个说法:(1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值(2)shell返回值:指system所调用的shell命令的返回值,比如上例中,test.sh中返回的值为...转载 2018-05-10 21:07:28 · 340 阅读 · 0 评论