linux
五月的天气
承认平凡 不甘平凡
展开
-
fcntl函数详解
功能描述:根据文件描述词来操作文件的特性。#include <unistd.h>#include <fcntl.h> int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(i转载 2018-11-03 20:23:57 · 27498 阅读 · 0 评论 -
open多次调用出现 EAGAIN错误
今天在看到说System V IPC的标识符是处于整个系统中的。并不是局限于单个进程中。书上说文件标识符是存在于进程中的,就想来验证一下,同时用open函数访问某个文件的时候,返回的文件标示符是否是一样的。不巧,却发现了这个错误:POSIX EAGAIN {resource temporarily unavailable}从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻...原创 2018-11-06 19:46:11 · 603 阅读 · 0 评论 -
linux下用互斥锁和条件变量来实现读写锁
以下内容来源自UNP卷二的第八章读写锁的概念( the conception of read-write lock )(1)只要没有线程持有某个给定的读写锁用于写,那么任意数目的线程可以持有该线程用于读(2)仅当没有线程持有某个给定的读写锁用于读或用于写,才能分配该读写锁用于写这种给定资源的共享访问方式也叫做共享-独占上锁因为获取一个读写锁用于读是共享锁,获取一个读写锁用于写是独占锁。...原创 2018-11-02 12:09:45 · 377 阅读 · 0 评论 -
Linux C 程序执行 shell 命令并获取返回结果的方法
原文链接:https://blog.csdn.net/luckydarcy/article/details/78669939 据说有统计数据表明,代码的缺陷率是一定的,与所使用的语言无关。Linux提供了很多的实用工具和脚本,在程序中调用工具和脚本,无疑可以简化程序,从而降低代码的缺陷数目。Linux shell 脚本也是一个强大的工具,我们可...转载 2018-11-07 12:00:16 · 4124 阅读 · 0 评论 -
线程同步(互斥锁与信号量的作用与区别)
“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的”也就是...转载 2018-11-05 10:54:20 · 545 阅读 · 0 评论 -
ld: i386 architecture of input file `write.o' is incompatible with i386:x86-64 output报错
当我在进行一个简单的编译一个内核的时候,在输入如下命令后 nasm -f elf -o write.o write.S ld -m elf_i386 -s -o write.bin write.o出现报错如下:ld: i386 architecture of input file `write.o' is incompatible with i386:x86-64 output原因是...原创 2018-11-21 20:54:05 · 8941 阅读 · 5 评论 -
通过gdb调试探寻函数调用时栈的变化
这个是接上一篇讲shellcode的,我觉得得先理解了函数调用时栈的变化,才能对其进行进一步的漏洞利用。所以我们废话不多说,开始吧。首先需要明确两个重要的寄存器:%rsp %rbp%rsp:指的是当前栈桢的顶部(他可是个调皮的人,总是在变化位置)%rbp:指的是栈桢的开始这两个寄存器我们可以这么理解,%rbp相当于我们通过段加基址访问内存时候的的基地址,永远指向一个栈的开始,当我们想要往栈...原创 2018-12-06 21:24:42 · 878 阅读 · 0 评论 -
shellcode的简介和编写
真的不得不说,刚把函数调用栈弄明白了,shellcode又不懂了。。。占坑。。。原创 2018-12-06 23:11:10 · 3369 阅读 · 1 评论 -
nc命令小简介
起因是最近在做pwnable.kr上的题目的时候发现有很多是要求你直接run aas下面这样Running at : nc pwnable.kr 9009我之前一直把它跟那个计算次数的命令wc给弄混了,实在是有些尴尬,于是就想来记录一下最好的工具莫过于 man nc了The nc (or netcat) utility is used for just about anything un...原创 2018-12-18 23:02:51 · 1641 阅读 · 0 评论 -
软硬链接详解——inode
文章转自阮一峰大神之作,膜拜啊,一看就勾起记忆就懂了:http://www.ruanyifeng.com/blog/2011/12/inode.html一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续...转载 2018-12-19 01:00:59 · 529 阅读 · 0 评论 -
linux驱动程序开发 上课笔记
根文件系统概述/bin存放系统命令/sbinsystem binary 系统二进制文件存放只有root用户才能操作的命令/devdevise存放设备文件,每一个硬件进来都会映射成一个设备文件如/dev/ttySAC0 这里的0指的是串口0设备的分类:字符设备(每次读写的时候以字符为单位,通常是慢速的,其通常是顺序读取的,不支持随机存取。如:键盘 串口)早期电话的调制解调...原创 2019-05-07 08:32:38 · 217 阅读 · 0 评论 -
linux中的文件锁(劝告性上锁和强制性上锁)
上午在看UNP卷二这一节的时候及其想睡觉,就草草了事,夜晚没有事情干,就来找找博客看看这两个锁到底是怎么回事吧!参考文章:https://www.ibm.com/developerworks/cn/linux/l-cn-filelock/index.html背景知识:在早期的 UNIX 系统,其只支持对整个文件进行加锁,因此无法运行数据库之类的程序,因为此类程序需要实现记录级的加锁。而在 Sy...原创 2018-11-03 20:21:36 · 9260 阅读 · 1 评论 -
不一样的sscanf函数
今天在看UNP卷二的第九章记录上锁的时候,就突然看到了这么一行代码sscanf(line,"%ld\n",&seqno);line是一个字符数组,通过read函数和一个文件的fd参数,将这个文件内容存在了line数组里。但是,是真的不明白为什么这个函数后,就把一个long型的seqno的值设置为1了呢?我感觉好像以前用过这个函数吧,但是,我已经忘记的差不多了。。。在这个例子中我却发...原创 2018-11-03 09:44:10 · 995 阅读 · 0 评论 -
c语言实现cp命令
#include<stdio.h>#include<unistd.h>#include<errno.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<sys/types.h>#include<stri原创 2018-10-13 11:08:59 · 6352 阅读 · 0 评论 -
execvp函数的一个好玩的现象
05_2_2.c#include<stdio.h>#include<unistd.h>int main(int argc, char const *argv[]){ printf("05_2_2.c:\n"); printf("My pid is %d\n",getpid()); printf("My arguments: "); for(int i =...原创 2018-10-13 17:21:45 · 1791 阅读 · 0 评论 -
exec函数小总结
该总结来源于油管上的一个视频,老哥讲的太棒了,先把地址贴上,夜晚来补总结。。。(希望我能记住写总结。。)exec函数讲解原创 2018-10-13 18:04:59 · 648 阅读 · 2 评论 -
c语言实现linux下高危函数system (简易V1.0版本)
system这个函数真的是要慎用,一不小心就会留下漏洞。下面是用c语言简易的实现了一下system函数#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<errno.h>#include<sys/types.h>int main(int argc, c...原创 2018-10-15 10:16:28 · 725 阅读 · 0 评论 -
linux 信号列表及分析
原文地址:http://blog.51cto.com/myunix/1107528~$ kill -lSIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILLSIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPESIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2SIGPIPE 14) SIGALRM 15...转载 2018-10-15 10:56:31 · 117 阅读 · 0 评论 -
利用strrchr函数从字符串中分离字符
比如在用FIFO写单服务器多用户的程序中,要分离出用户请求行中的路径,可以用strrchr函数。#include <string.h>函数原型:extern char * strrchr (const char *s, int c)参数说明:s为一个字符串的指针,c为一个待查找字符。查找在s字符串中最后一次出现字符c的位置。用户请求行格式为 PID+ “ ”+path,要分离...原创 2018-10-17 16:53:42 · 690 阅读 · 0 评论 -
删除重复文件的脚本代码
测试环境 :centos7⚠️注意:该代码在Mac os系统下会因为参数问题报错#!/bin/bash#查找并删除重复文件 每个文件只保留一份 ls -lS --time-style=long-iso | awk 'BEGIN { getline; getline; name1=$8; size=$5}{ name2=$8;...原创 2018-10-28 11:42:41 · 1411 阅读 · 1 评论 -
自动统计文件类型脚本
# !/bin/bash# 文件名: filestat.sh if [ $# -ne 1 ]; then echo "Usage is $0 basepath";exit fi path=$1 declare -A statarray; while read line; do ftype=`file -b "$line" | cut -d...原创 2018-10-29 14:08:21 · 264 阅读 · 0 评论 -
msgsnd函数 msgrcv函数的一些小问题(IPC_NOWAIT慎用!)
这两个函数别看它简单,真的是一不小心就会出错的啊报错1:msgsnd: Invalid argumentmsgrcv: Argument list too long这真的是一个最常见的错误了。。。归根究底是缓冲区长度的问题1⃣️这个问题我出错后修复之后竟然无法重现错误了。。。等我下次遇到了再补这个错误吧,反正肯定就是缓冲区长度问题。我写的代码如下,输出结果竟然为*** cbytes: ...原创 2018-10-31 16:43:10 · 11151 阅读 · 1 评论 -
记用AWK进行for循环查询文本时候的问题
今天刚刚接触awk,就想着来实验一下,当学到for循环的时候,我就简单的操作了一下1.txt 文本如下1 haha heihei houhou2 yannie2 yannie3 yannie43 hilary2 hilary3 hilary44 czl2 czl3 czl45 wo2 shi3 ni4当用按以下方法写能输出awk '{ for(i = 0;i<5;i+...原创 2018-10-30 09:57:16 · 2892 阅读 · 0 评论 -
linux下互斥锁实现的简单的生产者消费者问题
这个程序实现的功能很简单,也算是入门linux下的多线程编程了吧~其创造了两个生产者和一个消费者,两个生产者通过互斥锁实现同步,往缓冲区里放入数据,数据的值和其下标值一样,方便消费者的检验消费者等到生产者放完数据后,从缓冲区中取出数据,并进行检验,看是否有出现差错,没有的话即实现了同步操作/* include main */#include &lt;stdio.h&gt;#include...原创 2018-11-01 10:00:44 · 4712 阅读 · 0 评论 -
Linux下TCP套接字编程 c语言
Linux下TCP套接字编程 c语言先放上xmind绘制的思维图(今天的稍稍有点乱),夜晚的时候补上代码!!!(不可以再偷懒了。。。)原创 2018-10-02 10:15:41 · 741 阅读 · 0 评论