Linux
剑决浮云气
事了拂衣去,深藏功与名
展开
-
环境变量....
1.也就是key-value的形式就是一个全局的数组,字符串的指针数组, char * arr[]environ全局数组2.一个Demo#include <stdio.h>#include <stdlib.h>int main(int argc, char **argv, char **en){ for(; NULL != *en; en++) { puts(*en); }原创 2021-07-25 16:32:53 · 63 阅读 · 0 评论 -
命令行参数的分析
1.getopt #include <unistd.h> int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg; extern int optind, opterr, optopt;RETURN VALUE If an option was successfully found, then getopt() return原创 2021-07-25 15:09:40 · 97 阅读 · 0 评论 -
钩子函数atexit
1.查看man手册NAME atexit - register a function to be called at normal process terminationSYNOPSIS #include <stdlib.h> int atexit(void (*function)(void));①注册一个函数在进程正常结束的时候会被调用②很像C++里面的析构函数的作用2.一个Demo#include <stdio原创 2021-07-25 10:34:49 · 115 阅读 · 0 评论 -
进程的终止
1. 正常终止①从main函数返回 return 0 ;②调用exit(0);③调用_exit或者_EXIT④最后一个线程从其启动例程返回⑤最后一个线程调用pthread_exit2.异常终止①调用abort②接到一个信号并终止③最后一个线程对其取消请求做出响应...原创 2021-07-25 09:38:24 · 149 阅读 · 0 评论 -
系统调用之lseek
Linux每次打开一个文件,就会保存一个指针来指向文件的当前位置注意:这个指针是和文件描述符相挂钩的,并不与这个文件挂钩,所以可以有多个进程来对这个文件进行操作,不会影响各自。当从文件读取数据时,内核从指针指向的位置开始,读取指定的字节数,然后移动指针,指向下一个未被读取过的字节,写文件的过程也是类似。函数原型off_t oldpos = lseek(int fd, off_t disk, int base);参数说明fd 是文件描述符,disk是相对于 base的偏移量,base 是个基准返原创 2021-03-21 11:06:23 · 205 阅读 · 0 评论 -
CP命令的实现
#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include <stdlib.h>#define BUFSIZE 10void oops(char *s1, char *s2){ fprintf(stderr,"Error: %s ",s1); perror(s2); exit(1);}int main(int argc, char *argv[]){ char原创 2021-03-18 16:10:58 · 206 阅读 · 0 评论 -
系统调用之Write
函数原型ssize_t result = write(int fd, void * buf, size_t amt);函数参数fd 文件描述符buf 内存中的数据amt 要写入的字节数返回值返回成功写入的字节数如果写入失败,则返回-1原创 2021-03-18 16:08:13 · 294 阅读 · 0 评论 -
系统调用之creat
creat 注意没有e函数原型int fd = creat(char *path, mode_t mode);参数path 是创建/重写文件的路径名mode 就是访问模式了返回值如果创建或重写失败了,那么会返回-1如果成功 那么将返回它的文件描述符①创建int fd = creat(“TestCreate.txt”,0744);权限为rwxr–r--②重写的话 那就是清空了文件内容,文件长度为0代码#include <stdio.h>#include <fc原创 2021-03-18 15:24:54 · 491 阅读 · 0 评论 -
自己编写的Who 第一版本
#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <utmp.h>#include <stdlib.h>void ShowInf(struct utmp *p){ printf("% -8.8s ",p->ut_name); printf("% -8.8s ",p->ut_line); printf("%10ld\n",p->ut_t原创 2021-03-17 22:37:48 · 127 阅读 · 0 评论 -
系统调用Close
函数原型int result = close(int fd);参数是 文件描述符返回值-1 遇到错误0 代表关闭成功代码#include <stdio.h>#include <unistd.h>#include <fcntl.h>int main(int argc , char *argv[]){ int Result; int fd = open("/home/zzh35/TestWho/1.txt", O_RDONLY); if(-1 !原创 2021-03-17 20:13:08 · 410 阅读 · 0 评论 -
系统调用之Read
函数原型int read(int fd, void * buf, int size_to_read);参数 文件描述符 缓冲区 一次读取的大小返回值返回读取成功的字节数如果读取失败的话 返回-1代码#include <stdio.h>#include <unistd.h>#include <fcntl.h>int main(int argc, char *argv[]){ int size; //记录读取的字节数 int nNum; /原创 2021-03-17 19:42:03 · 1822 阅读 · 1 评论 -
系统调用之OPEN
函数原型int open (char * pathname, int how);路径名称pathname 打开方式how三种打开方式O_RDONLY 只读O_WRONLY 只写O_RDWR 可读可写在<fcntl.h>中有这三个宏定义返回值-1 打开失败int 成功返回 返回一个文件描述符代码#include <stdio.h>#include <unistd.h>#include <fcntl.h>int main(int a原创 2021-03-17 19:09:14 · 2199 阅读 · 3 评论 -
文件描述符
原文链接什么是文件?Linux 下,一切皆文件在Linux操作系统中,可以将一切都看作是文件,包括普通文件,目录文件,字符设备文件(如键盘,鼠标…),块设备文件(如硬盘,光驱…),套接字等等,所有一切均抽象成文件,提供了统一的接口,方便应用程序调用文件描述符既然在Linux操作系统中,你将一切都抽象为了文件,那么对于一个打开的文件,我应用程序怎么对应上呢?文件描述符应运而生文件描述符:File descriptor,简称fd,当应用程序请求内核打开/新建一个文件时,内核会返回一个文件描述符用于转载 2021-03-17 17:22:53 · 145 阅读 · 0 评论 -
/dev/tty
这是设备和显示器的设备描述文件,向这个文件写入相当于在用户的屏幕上显示,在这个文件上读取相当于从键盘获取用户的输入#include <stdio.h>#include <stdlib.h>int main(int argc, char* argv[]){ char ch; FILE *pf = fopen("/dev/tty","r"); if(NULL == pf) { printf("Open File Fail\n"); exit(1); }原创 2021-03-11 17:22:05 · 260 阅读 · 0 评论 -
more命令第一版
#include <stdio.h>#include <stdlib.h>#define PAGELEN 4//设定每次最多显示4行的内容#define LINELEN 512//每行最多显示512个字符void DoMore(FILE *pf);//读取文本内容 并将其输出到屏幕上int GetCommand(void);//获取用户输入的命令int main(int argc, char *argv[]){ FILE *pf = NULL; if原创 2021-03-11 16:56:27 · 114 阅读 · 0 评论 -
命令行参数
什么是命令行参数C/C++语言中的 main 函数,经常带有参数 argc,argv,如下:int main(int argc, char** argv)或者int main(int argc, char* argv[])在上面代码中,argc 表示命令行输入参数的个数(以空白符分隔),argv 中存储了所有的命令行参数。代码#include <stdio.h>int main(int argc, char* argv[]){ int i = 0; while(arg原创 2021-03-11 15:49:57 · 133 阅读 · 0 评论 -
Linux之进程处理方式
原文链接1、独立启动的守护进程:stand-alone,每个特定服务都有单独的守护进程,这个处理单一服务的始终存在的进程就是独立启动的守护进程。2、超级守护进程:多个服务统一由一个进程管理,该进程可以管理多个服务。3、Xinetd:即extended internet daemon,是新一代的网络守护进程服务程序,又叫超级Internet服务器,常用来管理多种轻量级Internet服务。Xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。...转载 2021-02-02 10:13:50 · 164 阅读 · 0 评论 -
Linux的黏着位
是针对一个目录是777权限也就是说所有用户都具有rwx才有设置的必要所有用户可以在该目录下添加删除自己的文件,别人的不可以,当然除了root我们知道在linux系统中文件(文件和目录)的权限有三种(r,w,x),而这三种权限对文件和目录的意义有所不同。权限对文件r (read) :可读取该文件的实际内容;w(write):可以编辑,新增或者修改该文件的内容(但不含删除该文件);x(execute):代表该文件可以被系统执行对于文件的r ,w, x来说,主要针对的“文件的内容”而言,原创 2021-01-26 19:29:59 · 163 阅读 · 0 评论 -
Linux中的SetUID简介
关于ruid和euid首先需要明确一下Linux进程中ruid和euid的概念.每一个Linux进程都会包含这两个uid.ruid(real user ID):ruid可以理解为哪个用户执行了这个程序或者文件, ruid就是谁.euid(effective user ID):当进程执行时间, 操作系统会对euid进行识别, 以此来判断到底用什么权限来执行这个进程.也就是说操作系统实际是通过判断进程的euid而不是ruid来给予其权限,只是在大多数情况下, euid和ruid是相等的.setu原创 2021-01-26 19:11:15 · 267 阅读 · 0 评论 -
Linux挂载
1.提一句Windows下,mount挂载,就是给磁盘分区提供一个盘符(C,D,E,…)。比如插入U盘后系统自动分配给了它I:盘符其实就是挂载,退优盘的时候进行安全弹出,其实就是卸载unmount。2.Linux下,不像Windows可以有C,D,E,多个目录,Linux只有一个根目录/。在装系统时,我们分配给linux的所有区都在/下的某个位置,比如/home等等。3.提问者插入了新硬盘,分了新磁盘区sdb1。它现在还不属于/。4.我们虽然可以在一些图形桌面系统里找到他的位置,浏览管理里面的文件,但转载 2021-01-23 16:26:15 · 273 阅读 · 0 评论 -
linux光盘修复
原文链接转载 2021-01-22 21:30:45 · 167 阅读 · 0 评论 -
设置GRUB菜单密码
默认情况下,启动操作系统后,按任意键可以进入GRUB菜单编辑页面如果想要给GRUB菜单设置密码,可以修改/etc/grub.conf文件 (/boot/grub/grub.conf)为要使用的密码进行md5加密,得到加密字符串[root@rhel64 ~]# grub-md5-crypt查看配置文件[root@rhel64 ~]# cat /etc/grub.conf将密码加密串写入配置文件/etc/grub.conf在hiddenmenu 和 title之间增加加密信息passwd -原创 2021-01-22 21:04:02 · 822 阅读 · 0 评论 -
对 /etc/rc.d/init.d 目录的一点理解
一、Linux的引导过程系统启动之后,在进入init.d之前,我们先来看看系统都做了什么工作。系统加电之后,首先进行的硬件自检,然后是bootload对系统的初始化,加载内核。内核被加载到内存之后,就开始执行了。一旦内核启动运行,对硬件的检测就会决定需要对哪些设备驱动进行初始化。从这开始,内核就能够挂装根文件系统(这个过程类似于Windows识别并存取C盘的过程)。内核挂装了根文件系统,并已初始化所有的设备驱动程序和数据结构等之后,就通过启动一个叫init的用户级程序,完成引导进程。二、 运行级别(原创 2021-01-22 18:07:09 · 482 阅读 · 0 评论 -
Linux下网络通信
转载https://www.cnblogs.com/xt-Corrine/p/10918481.html转载 2021-01-17 23:16:31 · 107 阅读 · 0 评论