linux系统编程,主要使用c语言,c++是c的超集,也是能够的linux
完整案例代码已上传github:github.com/neatlife/my…c++
可使用虚拟机安装一个linux系统进行linux系统开发,虽然mac os和linux很是类似,可是和linux仍是有不少小区别的,装虚拟机是最省事的 这里使用elementary os,下载地址参考:elementary.io/zh_CN/git
安装时,选linux 4.x以上的内核版本便可 github
界面效果以下: shell
标准库中包含下面的库编程
线程库pthread.h默认支持linux,windows须要额外安装,参考:sourceforge.net/projects/pt…ubuntu
进程建立销毁(fork、wait)等在unistd.h库,默认支持linuxwindows
对一个运行中的程序执行快捷键 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);
}
}
复制代码
效果以下
也可使用kill命令对一个程序发送SIGINT信号,SIGINT常理定义再signum-generic.h头文件中
对程序发送SIGINT信号时,程序会从sleep状态中醒过来,能够经过无限循环让程序持续运行
while (1) {
sleep(300);
}
复制代码
关闭虚拟机的节能选项,防止虚拟机常常进入随眠/退出状态
gsettings reset org.gnome.desktop.interface monospace-font-name
gsettings set org.gnome.desktop.interface cursor-blink false
gsettings set io.elementary.files.preferences single-click false
复制代码
SIGINT信号被替换了,ctrl c 没法终止程序了,可使用SIGKILL信号(代号9)终止即kill -9 pid,SIGKILL信号的处理函数是没法替换的,放心使用。
能够选择ubuntu做为开发环境,这样环境问题会比较少