
Linux
文章平均质量分 87
kkk_皮蛋
这个作者很懒,什么都没留下…
展开
-
信号量实现进程同步
信号量就是控制某个进程能够对某个资源进行访问;保证同一时刻只能由一个进程对某个资源进程访问;信号量是一个特殊的变量,对信号量的操作都是一个原子操作;打印机信号量是一个特殊的变量,一般取正数值。它的值代表允许访问的资源数目, 获取资源时,需要对信号量的值进行原子减一,该操作被称为 P 操作。当信号量值为 0时,代表没有资源可用, P 操作会阻塞。释放资源时,需要对信号量的值进行原子加一,该操作被称为 V操作。信号量主要用来同步进程。信号量的值如果只取 0,1, 将其称为二值信号量。原创 2024-05-14 14:30:23 · 1053 阅读 · 0 评论 -
Linux的IPC和管道
进程间通信(IPC机制)(Inter-Process Communication)进程间通信的方法:(1)管道 (2)信号量 (3)共享内存 (4)消息队列 (5)套接字。原创 2024-05-14 14:25:33 · 944 阅读 · 0 评论 -
Linux信号
运行sleep 500这个进程,发现使用自己的mykill命令发送15号信号显示的是"已终止(Terminated)",发现使用自己的mykill命令发送9号信号是"已杀死(killed)",ctrl+z发送 SIGTSTP 信号(停止进程的运行, 但该信号可以被处理和忽略)给前台进程组中的所有进程,常用于挂起一个进程。内核可以进程发送信号,别的进程也可以给进程发送信号,自己也可以给自己发送信号;那么在这里,我们修改一下代码,让父进程收到子进程的代码,打印一下收到的信号代号,不要忽略掉;原创 2023-11-30 00:45:00 · 944 阅读 · 0 评论 -
Linux自己写一个bash
字符串分割函数注意:strtok线程不安全,原因就是函数实现使用了一个static的变量(指针记录下次分割的地址,再次调用要沿用上次的,所以需要静态变量).在多线程中,如果两个线程都使用了strtok的话,这个变量的值就会被另一个线程不定期的进行修改.(后面会讲);原创 2023-12-01 09:30:00 · 1005 阅读 · 0 评论 -
Linux的mybash
/mybash.creturn;return;return;int i=0;while(s!=NULL)return;return;if(pid==0)else\n");exit(0);//clear.cint main()0H");原创 2023-12-01 23:30:00 · 414 阅读 · 0 评论 -
Linux(fork+exec创建进程)
ececl,execlp,execle,execv,execvp //库函数execve //系统调用//pathname:新替换的程序的路径+名字//arg :传给新程序主函数的第一个参数,一般为程序的名字//arg 后面是剩余参数列表,参数个数可变,必须以空指针作为最后一个参数//系统调用//前五个是库函数,最后一个是系统调用,所以本质上上面5个都是通过第六个系统调用实现的也就是说,上面5个都是调用的execve,不过都是。原创 2023-11-30 04:00:00 · 1237 阅读 · 0 评论 -
Linux中fork的进一步加深及信号基础
信号是系统响应某个条件而产生的事件,进程接收到信号会执行相应的操作;与信号有关的系统调用在<signal.h>头文件中.1)信号的存储位置旧版新版(23版)2)常见信号对应的功能SIGABORT *进程异常终止SIGALRM 超时警告SIGFPE *浮点运算异常SIGHUP 连接挂断SIGILL *非法指令SIGINT 终端中断。原创 2023-11-28 03:45:00 · 845 阅读 · 0 评论 -
Linux文件操作应用及open和fork
-1);close(fd);exit(0);原创 2023-11-28 00:15:00 · 1000 阅读 · 0 评论 -
Linux僵死进程及文件操作
两个参数用于打开一个已经存在的文件;三个参数的用于新建一个文件,并设置访问权限;fd:对应打开的文件描述符buf:写入的文件内容;count:要写入多少个字节;返回值:ssize_t:实际写入了多少个字节;关闭文件描述符;原创 2023-11-29 04:00:00 · 2660 阅读 · 0 评论 -
Linuxfork,写时拷贝
printf("s=%s,pid=%d,ppid=%d,n的地址为:%p\n",s,getpid(),getppid(),&n);也就是说A进程和B进程的逻辑地址相同,就不能说明物理地址一定相同,我们还需要看各自的页表,看看页表是否相同.(页表就是逻辑页和物理页的映射关系);以前我们的程序都是只有一个进程,我们逻辑地址相同,那么我们的逻辑地址映射过去的物理地址肯定也是相同的一块空间,(先open再fork)我们在进程中看到的地址就是进程的逻辑地址(进程的4G空间,从0开始,一直往上增长);原创 2023-11-27 03:45:00 · 1750 阅读 · 0 评论 -
Linux静态库,共享库,计算机基础知识
1).库文件2).库的分类静态库:libxxx.a(命名规则)共享库:libxxx.so(命名规则)3).准备文件://add.creturn x+y;x:y;//foo.h。原创 2023-11-28 05:30:00 · 2873 阅读 · 0 评论 -
Linux进程管理,用户管理,文件压缩命令
比如有两个文件:main.c,mainc++.cpp(分别用C语言和C语言写的)如果要用gcc编译呢?gcc -o mainc mainc++.cpp -lstdc++ 指明用c++的标准库;区别一:gcc默认只链接C库,并不会链接C++的库;g++会默认链接c++标准库.区别二:gcc编译.c文件,则按照C语言的方式编译;gcc如果编译.cpp文件,则按照c++的方式编译;g++不管是c文件还是cpp文件,都是按照c++的方式进行编译;原创 2023-11-26 07:15:00 · 907 阅读 · 0 评论 -
Linux的gcc,gdb基础
路径+可执行文件名或者路径+可执行文件名 & (将进程放到后台执行);可以把可执行文件放到 /usr/bin 就可以省略路径了;思考:为什么?ps :/usr/bin ps,ls,pwd (先了解,后期写项目就知道为什么了)原创 2023-11-25 12:15:00 · 840 阅读 · 0 评论 -
Linux中vim的编译链接和gcc
命令行写gcc,g++,gdb根据提示安装:sudo apt install gcc/g++/gdb。原创 2023-11-25 07:45:00 · 517 阅读 · 0 评论 -
Linux基础命令
(需要加-r)5.图形化界面6.重启;原创 2023-11-24 10:45:00 · 390 阅读 · 0 评论 -
Linux系统介绍及文件类型和权限
终端:Ctrl+Alt+T 或者桌面/文件夹右键,打开终端切换为管理员:sudo su 退出:exit查看内核版本号:uname -a内核版本号含义:5 代表主版本号;13代表次版本号;0代表修订版本号;30代表修订版本的第几次微调;数字越大表示内核越新.原创 2023-11-24 07:30:00 · 922 阅读 · 0 评论 -
初识Linux
1991 大三的学生 Linus Torvalds MINIXLinux 内核1991 年8月25日, 一位名为 Linus Torvalds的芬兰计算机专业的学生在Usenet 的 comp.os.minix 新闻组中发布了 Linux 的第一个公告,宣布了 Linux 的诞生。Torvalds介绍了自己因为项目的需要开发了Linux内核系统,当时他在一台386sx兼容微机上学习 MINIX操作系统,然后开始着手酝酿编制自己的操作系统,到目前为止基本完工。原创 2023-11-22 10:26:09 · 88 阅读 · 0 评论