专栏名称: 苏小林
目录
相关文章推荐
超级数学建模  ·  当杠精在网上遇到实诚人... ·  4 天前  
超级数学建模  ·  限时领 | ... ·  4 天前  
超级数学建模  ·  三星堆的灭亡,竟是因为“谋反”? ·  3 天前  
51好读  ›  专栏  ›  苏小林

三分钟上手linux系统开发

苏小林  · 掘金  ·  · 2019-08-18 19:27

正文

阅读 154

三分钟上手linux系统开发

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

c标准库
这些库中一般都包含一些结构体和几个函数,其中输入输出库stdio.h, 一般函数库(malloc、free等)stdlib.h,字符串处理库string.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);
    }
}
复制代码

效果如下





请到「今天看啥」查看全文