linux系统编程学习
文章平均质量分 66
奔走在路上的小白
想要待在原地,只能努力奔跑
展开
-
Linux C API
Linux C APIreboot();#include <linux/reboot.h> /* Definition of LINUX_REBOOT_* constants /#include <sys/syscall.h> / Definition of SYS_* constants */#include <unistd.h>int syscall(SYS_reboot, int magic, int magic2, int cmd, void原创 2021-11-29 15:41:57 · 368 阅读 · 1 评论 -
Shell脚本----文件测试运算符
文件测试运算符文件测试运算符用于检测Unix文件的各种属性-b (file)检测文件是否是块设备文件,如果是,则返回true,举例:[-b $file]返回false-c file检测文件是否是字符设备文件,如果是,则返回true,举例:[-c $file] 返回false-d file检测文价是否是目录,如果是,则返回true。举例:[-d $file] 返回false-f file检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回true。举例原创 2021-02-08 15:06:16 · 1403 阅读 · 0 评论 -
Linux应用编程----日期时间记录
Linux应用小题创建一个文件,向文件中每隔1s记录一次日期和时间,并且按照顺序向后递增,例如:然后呢,该记录可以暂停,可以继续,然后还可以退出;如果下次再次启动,继续在上次退出时的后面继续排序写入记录。#include<stdio.h>#include<time.h>#include<pthread.h>#include<unistd.h>#include<sys/types.h>#include<signal.h>原创 2020-12-16 21:34:43 · 214 阅读 · 0 评论 -
Linux库文件---静态库和动态库
静态库和动态库静态库:在生成可执行文件的时候载入库。因此生成的可执行文件较大。但是在运行时候就不再需要库了。生成目标文件gcc -c fun.c -o fun.o生成静态库,以lib开头,加库名,.a 为后缀ar crs libfun.a fun.o库的使用gcc main.c -o main -L . -lfun-L 表示链接库的路径-I 表示链接头文件所在位置//fun.cint add(int a,int b){ return a+b;}//原创 2020-12-09 23:15:07 · 391 阅读 · 4 评论 -
Linux消息队列---进程之间通信
Linux消息队列—进程间通信原创 2020-12-07 22:47:46 · 162 阅读 · 0 评论 -
Linux共享内存----进程间通信
Linux 共享内存共享内存:1.共享内存是最为高效的进程间通信方式2.共享内存往往需要同步与互斥的机制(信号灯集)3.ipc 对象不会随进程的结束而销毁,可以多次利用。必须手动注销或者系统重新启动才会销毁。/usr/include/linux 中shm.h里对共享内存的大小,数量进行了规定,以及属性信息。ipcs -m 查看共享内存ipcs -q 查看消息队列ipcs -s 查看信号量集ipcrm -m id 删除一个ipc对象-s-qkey_t ftok(const cha原创 2020-12-07 15:08:10 · 358 阅读 · 0 评论 -
linux系统编程-----标准I/O函数实现ls命令
标准I/O实现简易ls命令//使用标准文件I/O操作实现ls命令#include<stdio.h>#include<dirent.h>#include<sys/types.h>#include<string.h>#define N 256int main(int argc,const char *argv[]){ DIR *pdir=NULL; struct dirent *dir; if(argc <= 1){原创 2020-11-04 16:38:04 · 331 阅读 · 0 评论 -
linux系统编程---标准I/O操作实现cp命令
标准I/O函数实现cp命令//通过标准IO操作,实现cp命令#include<stdio.h>#define N 256 //定义个宏,方便以后的修改int main(int argc,const char *argv[]){ char buf[N]={0}; //定义一个存储数据的buf FILE *fOri=NULL; //定义两个文件指针 FILE *fDest=NULL; if(argc<3){ //如果命令行参数少于三个就返回原创 2020-11-04 15:26:15 · 2277 阅读 · 10 评论 -
线程
线程什么是线程?线程的优点是什么?线程在Unix下,被称为轻量级的进程,线程虽然不是进程,但可以看作是Unix进程的表亲,同一进程中的多条线程共享该进程中的全部资源,如虚拟地址空间、文件描述符、和信号处理等等,但同一进程中的多个线程有各自的调用栈(call satck),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。一个进程可以有很多线程,每条线程执行不同的任务。线程可以提高应用程序在多核环境下处理诸如文件I/O或者socket原创 2020-10-22 20:30:45 · 116 阅读 · 0 评论 -
Shell脚本变量----从命令行读取
读取和判断变量在执行Shell脚本时,想从命令行跟随指定的参数,然后通过指定的参数执行特定的命令。#!/bin/bash #value=1#if-then else fi 结构#$1 是从 ./delete.sh 后的第一个参数 , 比如./delete.sh 1,则$1的值就是1#如果命令行中参数为空,会出现错误 ./delete.sh: line 7: [: ==: unary operator expected#所以需要在if之后添加双括号,这个问题比较隐蔽if [[ $1 == 1原创 2020-07-09 11:46:14 · 1194 阅读 · 0 评论 -
shell CMD
在命令行窗口中,有很多强大的命令快捷方式,能够帮助我们在茫茫的文件海洋中快速找到自己中意的那位心上人。命令执行的判断根据: ;、&&、||cmd;cmd(不考虑命令相关性的连续命令执行)在某些时候,我们希望可以一次性执行多个命令,例如在关机的时候我希望可以先执行两次sync同步写入磁盘后才shutdown计算机,那么可以怎么做呢,比如下面: ubuntu@ubuntu-...原创 2019-10-27 22:49:48 · 724 阅读 · 0 评论 -
消息队列
在阅读项目系统底层代码时,看到使用的IPC消息队列是Posix的,之前自己使用的是system V 消息队列,两者在某些方面还是有部分区别的。原创 2019-08-21 16:57:39 · 136 阅读 · 0 评论 -
C程序的存储空间布局
C程序一直由下列几部分组成:.正文段:这是由CPU执行的机器指令部分。通常,正文段是可共享的,所以即使使是经常执行的程序(如文本编辑程序,C编译程序,shell等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防止程序由于意外事故而修改其自身的指令。.初始化数据段通常将此段称为数据段,它包含了程序中虚赋初值的变量。例如,C程序中任何函数之外的说明:int maxcount ...原创 2019-07-29 16:12:02 · 177 阅读 · 0 评论