linux系统编程,主要使用c语言,c++是c的超集,也是可以的
完整案例代码已上传github:github.com/neatlife/my…
获取可用环境
可以使用虚拟机安装一个linux系统进行linux系统开发,虽然mac os和linux非常相似,但是和linux还是有很多小区别的,装虚拟机是最省事的 这里使用elementary os,下载地址参考:elementary.io/zh_CN/
安装时,选linux 4.x以上的内核版本即可
界面效果如下:
C语言标准库
标准库中包含下面的库
- assert.h
- ctype.h
- errno.h
- float.h
- limits.h
- locale.h
- math.h
- setjmp.h
- signal.h
- stdarg.h
- stddef.h
- stdio.h
- stdlib.h
- string.h
- time.h
线程库pthread.h默认支持linux,windows需要额外安装,参考:sourceforge.net/projects/pt…
进程创建销毁(fork、wait)等在unistd.h库,默认支持linux
一个例子-替换信号处理
对一个运行中的程序执行快捷键 Ctrl + C 默认会中断程序的运行,并使得程序退出
#include <stdio.h>
#include <signal.h>
int
main(int argc, char *argv[])
{
printf("Hello World!");
sleep(300);
}
复制代码
效果如下
可以看到当按下ctrl c的时候,程序立马就退出了,这是因为当按下ctrl c时shell终端向程序发送了SIGINT信号。 默认SIGINT信号的处理是终止程序的运行,可以通过signal.h库中的signal函数注册一个新的SIGINT信号的处理程序替代默认行为,比如受到SIGINT时,简单打印一个字符串
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
static void
mySigHandler(int sig)
{
printf("in signal handler\n");
}
int
main(int argc, char *argv[])
{
if (signal(SIGINT, mySigHandler) == SIG_ERR) {
printf("替换信号处理器异常\n");
exit(1);
}
printf("Hello World!\n");
while (1) {
sleep(300);
}
}
复制代码
效果如下