linux系统编程
波雅_汉库克
这个作者很懒,什么都没留下…
展开
-
宏函数怎么写(在多文件下使用)
记录一下宏函数怎么写,以后忘了可以回来看看自己写的代码。本次写的宏函数是打印错误信息代码并且退出。环境是ubuntu16.04.编译器是gcc g++是5.4版本。上代码: 1 #include <stdio.h> 2 #include <unistd.h> 3 #include <sys/types.h> 4 #include &l...原创 2018-12-19 19:45:43 · 2447 阅读 · 0 评论 -
采用系统调用的方式读取数据
C语言C++中有很多方式输入字符或者数据,比如scanf gets函数C++中有cin函数,本次实验重点实现采用系统调用实现输入字符。采用read函数实现。本次实验的环境为ubuntu16.04 编译器是gcc 5.4版本#include <stdio.h>#include <unistd.h>#include <sys/types.h>#inc...原创 2018-12-25 15:21:14 · 406 阅读 · 0 评论 -
文件锁的探讨
本次实验是实现文件锁。废话不多说,上代码。 #include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#include &l...原创 2018-12-25 16:06:38 · 122 阅读 · 0 评论 -
守护进程
什么是守护进程:守护进程是在后台运行不受控端控制的进程,通常情况下守护进程在系统启动时自动运行守护进程的名称通常以d结尾,比如sshd、xinetd、crond等创建守护进程的步骤:调用fork(),创建新进程,他会是将来的守护进程在父进程中调用exit,保证子进程不是进程组长调用setsid创建新的会话期将当前目录改为根目录将标准输入。标准输出、标准错误重定向到 ...原创 2019-01-04 22:41:46 · 342 阅读 · 0 评论 -
信号signal
中断中断是系统对于异步事件的响应中断信号中断源现场信息中断处理程序中断向量表中断分类硬件中断(外部中断)外部中断是指由外部设备通过硬件请求的方式产生的中断,也称为硬件中断。软件中断(内部中断)内部中断是有CPU运行·程序错误或执行内部程序调用引起的一种中断,也称为软件中断。信号信号是Unix系统响应某些状况而产生的事件,进程在接收到信号时会采取相...原创 2019-01-05 22:01:44 · 674 阅读 · 0 评论 -
exec相关的函数
在头文件<unistd.h>下有五个exec相关的函数。功能用exec函数可以把当前进程代替为一个新进程。原型:int execl(const char *path,const char *arg,...)int execlp(const char *file,const char *arg,...)int execle(const char *path,const...原创 2019-01-02 20:48:04 · 186 阅读 · 0 评论 -
C语言编写管道代码
什么是管道:管道是Unix中最古老的进程间通信的形式。我们把从一个进程链接到另外一个进程的一个数据流称为管道。本质是有固定大小的内核缓存区。管道的限制管道是半双工的,数据只能向一个方向流动,需要双方通信时,需要建立起两个管道只能用于具有共同祖先的进程(具有亲缘关系的进程)之间进行通信,通常,一个管道由一个进程创建,然后该进程调用fork,此后父、子进程之间就可以用管道。...原创 2019-01-17 20:27:04 · 4039 阅读 · 0 评论 -
有关时间函数的使用time()
三种不同精度的睡眠unsigned int sleep(unsigned int seconds); //睡眠多少秒,睡眠被信号中断,返回剩余的睡眠时间int usleep(useconds_t usec); //睡眠多少微秒,int nanosleep(const struct timespec *req,struct timespec *rem); //睡眠多少纳秒...原创 2019-01-15 21:32:41 · 3005 阅读 · 1 评论 -
如何执行一个程序命令删除自己写的代码(比如自毁程序)
昨天晚上突然有的一个想法,现在拿出来试试。#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#include <errn...原创 2019-01-23 09:07:31 · 8055 阅读 · 0 评论 -
linux输出重定向
本次实验是输出重定向,实验目的是实现 printf 输出字符写到test.txt文件中。实验环境是阿里云ubuntu16.04系统。编译器是gcc5.4版本。思路是先关闭文件描述符1 使用close函数和dup函数文件描述符前三个是固定的,0号文件描述符是输入文件描述符,1号文件描述符是输出文件描述符,2号是错误文件描述符。所以先关闭1号文件描述符。dup()函数的作用是返回一个新的文...原创 2018-12-25 10:35:16 · 197 阅读 · 0 评论 -
wait/waitpid函数
父进程查询子进程的退出状态可以用wait/waitpid函数。wait系统调用会使父进程暂停执行直到它的一个子进程结束为止。返回的是子进程的PID,它通常是结束的子进程状态信息允许父进程判定子进程的退出状态,即从子进程的main函数返回的值或子进程中exit语句的退出码。如果status不是一个空指针,状态信息将被写入它指向的位置。宏定义 描述 WIFEXITED(s...原创 2019-01-03 21:03:52 · 510 阅读 · 0 评论 -
C/C++复制文件代码的实现
本次实验主要是实现在同一目录下复制一个文件。实验环境为阿里云ubuntu16.04编译器是gcc 5.4版本。#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#includ...原创 2018-12-20 16:54:27 · 4170 阅读 · 0 评论 -
输出文件描述符偏移量
#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#include <errno.h>#include &l原创 2018-12-20 17:27:03 · 610 阅读 · 0 评论 -
C/C++产生空洞文件(lseek)
本次实验是使用lseek函数实现一个空洞为文件,所产生的文件开头是ABCDE结尾是hello中间32个字符是‘\0’填充。实验环境为阿里云ubuntu16.04 编译器是gcc5.4版本。#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat...原创 2018-12-20 19:32:26 · 1076 阅读 · 0 评论 -
打印目录中文件名字的代码类似于linux中ls命令的代码(C/C++)
本次实验是打印目录下文件的名字的代码。实验环境为阿里云ubuntu16.04 编译器是gcc5.4版本。#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include &...原创 2018-12-20 20:16:35 · 365 阅读 · 0 评论 -
C/C++ 进程的探索(fork函数)
本次实验目的是学习进程fork函数的使用以及注意事项。实验环境为ubuntu16.04 编译器是gcc 5.4废话不多说,先上代码了。一会解释。#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <...原创 2018-12-26 18:57:57 · 1386 阅读 · 0 评论 -
关于open函数的补充
open函数的系统调用有两种方式,一种是没有文件创建一个文件并且打开,一种是只有以只读只写等方式打开。以下演示这两种方式的代码:#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>...原创 2018-12-27 09:33:51 · 192 阅读 · 0 评论 -
如何输出自己写的代码?
昨天同门问我一个问题,怎么打印输出自己写的代码。昨天由于回寝室了,没有写。今天上午来实验室想了想这个问题。思路是用open函数打开文件(自己写的代码文件),读取代码文件,然后打印就可以了。以下是代码实现:#include <iostream>#include <unistd.h>#include <fcntl.h>//一个小测试int mai...原创 2018-12-18 15:21:15 · 2230 阅读 · 0 评论 -
如何输出错误信息
linux系统编程中输出错误信息。系统是ubuntu16.04编辑器是gccg++ 5.4说明一下:unistd.h头文件包含了许多宏定义。stdlib.h这是标准C库的头文件string.h和errno.h是输出错误信息需要的头文件。#include <iostream>#include <unistd.h>#include <strin...原创 2018-12-18 20:32:38 · 1264 阅读 · 0 评论 -
管道的读写规则
管道的读写规则当没有数据可读时:O_NONBLOCK disable:read调用阻塞,即进程暂停执行,一直等到有数据来到为止。O_NONBLOCK enable:read调用返回-1,errno值为EAGAIN。如果所有管道写端对应的文件描述符被关闭,则read返回0.如果所有管道读端对应的文件描述符被关闭,则write操作会产生信号SIGPIPE当要写入的数据量不大于P...原创 2019-02-13 22:32:36 · 937 阅读 · 0 评论