linux
小鼠2021
heloo
展开
-
关于执行sh ./xxx.sh时出现:Syntax error: “(” unexpected 的处理方法
产生Syntax error: “(” unexpected 的原因bash and dashBash是许多Linux平台的内定Shell,除bash外,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等。GNU/Linux 操作系统中的 /bin/sh 本是 bash的符号链接,但鉴于 bash 过于复杂,有人把 bash 从 NetBSD 移植到 Linux 并更名为 dash 并将 /bin/sh 指向它,以获得更快的脚本执行速度。Dash Shell 比 B原创 2022-03-27 11:51:39 · 2859 阅读 · 0 评论 -
进程(5)守护进程daemon
守护进程的特点始终在后台运行,不会干扰到其他进程前台进程可以与中断交互,而守护进程与终端无关并独立于任何终端一般用于周期性的执行某种任务或者等待处理事件会话(session)Linux以会话的方式管理进程组和进程每个进程属于一个进程组会话:一个或多个进程组的集合,通常用户打开一个终端系统则运行一个会话,所有通过该终端运行的进程都属于这个会话,当终端关闭时所有的相关进程也会结束守护进程的创建创建子进程,父进程退出,如此则子进程被init收养,转为后台运行在子进程中创建新会话,如此原创 2021-01-28 11:53:33 · 79 阅读 · 0 评论 -
进程(4)exec函数族
exec函数族的作用当一个进程不需要再继续往下执行时,可以调用exec函数族函数让进程继续存在如果父进程想要执行其他的可执行程序,则可以创建一个子进程并调用exec函数族函数如果在进程中调用了exec函数族函数则进程当前内容(数据段、代码段、堆栈段)被替换(PID除外)exec函数族定义#include <unistd.h>extern char **environ;int execl(const char *path, const char *arg, .../* (cha原创 2021-01-28 11:34:10 · 163 阅读 · 0 评论 -
进程(3)
创建进程#include <unistd.h>pid_t fork();// 创建新的进程// 创建成功则父进程返回子进程PID,子进程返回0// 创建失败返回EOF// 父子进程的区分就通过PID结束进程#include <stdlib.h>#include <unistd.h>void exit(int status);void _exit(int status);// 结束进程并将status&0377返回给父进程// exit(原创 2021-01-26 22:36:49 · 67 阅读 · 0 评论 -
进程(2)
查看进程信息# 查看系统进程快照ps # 查看全部进程ps -ef | more# 查看进程状态ps aux# 查看进程动态信息top进程优先级命令# 优先级-20~19,依次递减 # 普通用户 0~19,root用户-20~19nice -n 2 ./test # 修改正在运行的进程renice -n 2 PID# 查看后台进程jobs# 将后台作业变成前台进程fg [1]# 将前台进程变成后台作业并挂起ctrl-z# 运行后台作业bg [1]父子进程原创 2021-01-25 21:18:57 · 58 阅读 · 0 评论 -
进程(1)
基本概念进程是一个程序所分配资源的总称进程是程序的一次执行过程进程是动态的,包括进程的创建、 调度、执行、消亡进程:{正文段,用户data,系统data}程序:{正文段,用户data}系统数据包括:{进程标识符,进程用户,进程状态,进程优先级,文件描述符表}进程类型交互进程:在shell下启动,可前台运行,也可后台运行批处理进程:与终端无关,被提交到作业队列中顺序执行守护进程:和终端无关,一直在后端运行进程状态运行态:正在运行,或准备运行等待态:等待资源,可分为可中断等待原创 2021-01-25 20:41:13 · 50 阅读 · 0 评论 -
GDB调试常见用法总结
生成调试信息gcc -g test.c -o testg++ -g test.cpp -o test启动gdb testgdb pro PID程序运行参数set args [argu1 argu2 ...] # 指定运行参数show args# 查看运行参数run/r [argu1 argu2 ...]# 指定运行参数并运行断点# 查询所有断点info b# 设置简单断点b/breakpoint [lineno]b/breakpoint [functionname]原创 2021-01-25 20:09:07 · 77 阅读 · 0 评论 -
文件IO
相关概念文件IO遵循POSIX(可移植操作系统接口),无缓冲区。优势在于可以访问各种类型的文件,并使用文件描述符表示一个打开的文件。文件描述符每打开一个文件都有一个对应的文件描述符文件描述符从0开始分配,依次递增文件的IO则通过文件描述符完成文件IO相关操作文件的打开#include <unistd.h>int open(const char *path,int flags,mode_t mode);// path 文件名(包括路径)/* flags: O_RDO原创 2021-01-21 13:08:10 · 60 阅读 · 0 评论 -
标准I/0——流的基本操作
流的打开FILE *fopen(const char *path,const har *mode)// 成功则返回流指针,出错则返回NULLmode参数:r/rb只读,文件必须存在r+/r+b可读写,文件必须存在w/wb只写,文件不存在则创建w+/w+b可读写a/ab文件存在则追加,否则创建新文件a+/a+b追加可读写流的关闭int fclose(FILE *stream);// 成功返回0,失败返回EOF并设置errno流的原创 2021-01-21 11:20:02 · 161 阅读 · 0 评论 -
Linux标准IO——流
特点标准IO通过缓存机制减少系统调用,实现更高的效率。由ANCⅡ C库定义是在文件I/O的基础上添加了一个缓存机制流(stream)Windows:分为二进制流(换行符<=>‘\n’),文本流(换行符<=>’\r’,‘\n’)Linux:不区分二进制流和文本流(换行符<=>‘\n’)由FILE结构体存放打开文件的相关信息:struct _iobuf{ char *_ptr;// _ptr 字符指针表示文件输入的下一个位置 int _cnt;原创 2021-01-21 10:45:30 · 201 阅读 · 0 评论 -
Linux文件类型
文件类型分类常规文件目录文件字符设备文件块设备文件管道文件套接字文件符号链接文件原创 2021-01-21 10:14:31 · 63 阅读 · 0 评论 -
关于PC机大小端模式的总结
大小端模式的由来在计算机系统中以字节为单位,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节存储和使用的问题。因此就出现了大端存储模式和小端存储模式。例如一个16bit的short型x,在内存中的地址为0x0010,x的值为0x1122,那么0x11为高字节,0x22为原创 2020-08-19 15:42:54 · 551 阅读 · 0 评论 -
关于SHELL 测试命令总结
测试语句语法test 判断命令[ 判断命令 ]常见测试命令整数比较-eq => equal-ne => not equal-lt => less than -le => less than or equal to-gt => greater than -ge => greater than or equal to 字符串比较文件类型判别[ -d DIR ] =>判断DIR是否为目录[ -f FILE ] =>判断FIL原创 2020-07-20 20:14:41 · 117 阅读 · 0 评论 -
关于gcc和Makefile的使用总结
gcc编译的过程1.预处理,preprocess 把头文件和库文件展开,宏定义直接替换.$ gcc -E main.c -o main.i 2.汇编,compile , 生成一个汇编代码文件 $ gcc -S main.i -o main.s 3.编译,assemble $ gcc -c main.s -o main.o 4.链接,link $ gcc main.o -o main.gcc编译常用命令$ gcc mian.c -o mian Makefi原创 2020-07-13 11:19:54 · 187 阅读 · 0 评论 -
vim常用命令及知识点总结
交换文件在vim编译时,如果直接关闭终端则会存在交换文件,而且在下次打开时会有提示界面,可以按D键删除。打开文件vim <filename> #打开文件vim <filename> num #快速定位到指定行vim <filename> + #直接定位到末尾vim模式常用命令移动和选择删除,复制,粘贴可视模式 可视块利用可视块给多行代码添加注释:Step1.数字0:回到行首Step2.ctrl v:进入可视块模式Step3.j :向下原创 2020-07-11 16:17:46 · 193 阅读 · 0 评论 -
关于LINUX的diff -u a.txt b.txt结果的分析
diff 主要用于比较源文件和目标文件的差别具体内容可在终端输入 diff --help查看a.txt 和b.txt 的文本内容vim a.txthello worldhello c++ vim b.txt hello c++ hello java hello python $diff -u a.txt b.txt在这里 a.txt为源文件,b.txt为目标文件结果如下:结果分析1.- - - a.txt 2020-07-08 20:21:01.534545原创 2020-07-08 20:38:35 · 486 阅读 · 0 评论