
文件IO
扳手的海角
这个作者很懒,什么都没留下…
展开
-
100_进程通信_使用共享内存,发布通知(10条)给到3个进程【向共享内存写、读,创建的消息队列键值,必须一致,打开同一块共享内存】
动图:往共享内存写东西:#include <stdio.h>#include <sys/ipc.h>#include <sys/msg.h>#include <sys/types.h>#include <string.h>#include <sys/types.h>#include <sys/wait.h>#include <sys/shm.h>#include <unistd.h&g原创 2021-09-09 19:26:55 · 296 阅读 · 0 评论 -
99_进程通信_同98_这个是三个.c文件_消息队列,完成3个人直接互相通信【注意:子进程2中的接收方的消息类型三个文件各不相同6、7、9 以及子进程1中的发送方的消息类型】
动图:msgrcv(msgid, &rcvmsg, sizeof(rcvmsg) - sizeof(long), 9, 0);只有这一条不同1.c#include <stdio.h>#include <sys/ipc.h>#include <sys/msg.h>#include <sys/types.h>#include <string.h>#include <sys/types.h>#include <原创 2021-09-09 19:06:57 · 111 阅读 · 0 评论 -
98_进程通信_消息队列_一个文件,完成完成3个人直接互相通信【键值或消息标识符都是同一个】【注意:子进程2中的接收方的消息类型,以及子进程1中的发送方的消息类型】
动图:代码#include <stdio.h>#include <sys/ipc.h>#include <sys/msg.h>#include <sys/types.h>#include <string.h>#include <sys/types.h>#include <sys/wait.h>#include <stdlib.h>typedef struct _msg{ int原创 2021-09-09 17:53:07 · 128 阅读 · 0 评论 -
94_消息队列ftok()创建一个共同使用的键值,一个人自发自收,有一个父进程一个子进程【同样可以创建多个.c完成互相通信,只要发送的消息类型不一样就行,接收消息固定即可】
#include <stdio.h>#include <sys/ipc.h>#include <sys/msg.h>#include <sys/types.h>#include <string.h>#include <sys/types.h>#include <sys/wait.h>typedef struct _msg//消息队列的消息的格式{ long mtype; char buf[原创 2021-09-09 09:32:52 · 153 阅读 · 0 评论 -
93_文件io_消息队列-创建两个消息队列,各有两个子进程一个父进程,子进程一个发、一个收,对[同一个]消息队列标识符进行操作
消息队列1–消息队列2:–不同之处是,发送的id,与接收的消息类型不一样,这样才能在消息队列中针对性的给这个消息类型,发送信息#include <stdio.h>#include <sys/ipc.h>#include <sys/msg.h>#include <sys/types.h>#include <string.h>#include <sys/types.h>#include <sys/wait.h>原创 2021-09-08 21:59:23 · 290 阅读 · 0 评论 -
92_文件io_有名管道,创建两个进制,相互通信【难点:都有两个子进程,谁读?谁写?读写又怎么接受,会不会阻塞?父进程又怎么销毁结束的子进程】
动图:mkfifio.c#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <string.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h> int main(){ int ref = mkfifo("./fifo_cmd_1", 0原创 2021-09-08 20:05:46 · 103 阅读 · 0 评论 -
91_文件io_磁盘映射读、写【难点:为什么先创建文件?以及创建文件为空,会出现总线错误 (核心已转储)】
动图:先写操作:#include <stdio.h>#include <sys/ipc.h>#include <sys/msg.h>#include <sys/types.h>#include <string.h>#include <sys/types.h>#include <sys/wait.h>#include <sys/shm.h>#include <unistd.h>#原创 2021-09-08 17:45:33 · 206 阅读 · 0 评论 -
90_文件IO_外部执行expr命令完成计算功能,把管道的写端与标准输出1重定向【难点:重定向fd[1]与标准输出1、execlp、execvp、system】
#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <string.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h> void myatexit(void){ puts("----不再执行管道写------");}int main(.原创 2021-09-08 09:18:11 · 206 阅读 · 0 评论 -
89_文件IO_【简单的 fd[2]】验证无名管道,如果父进程中read读端口全部关闭,子进程write写出现错误
#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <string.h>#include <unistd.h>#include <stdlib.h>int num=100;int main(){#if 0 write(1, " hello word\n", sizeof( "hello word\n")); printf原创 2021-09-07 10:47:26 · 153 阅读 · 0 评论 -
88_文件IO_采用vfork()的方式创建进程,模拟system函数【execl进程替换、atexit退出、vfork父子进程创建,父进程阻塞回收】
动图:vfork.c#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <string.h>#include <unistd.h>#include <stdlib.h>int mysystem();void my_out(){ puts("----退出进程创建-------");}int main(int argc, ch原创 2021-09-06 20:30:44 · 159 阅读 · 0 评论 -
87_文件IO_模拟实现system函数
动图:#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <string.h>#include <unistd.h>#include <stdlib.h>int mysystem(const char *string);void my_out(){ puts("----退出进程创建-------");}char buf_2[1原创 2021-09-06 19:56:43 · 106 阅读 · 0 评论 -
84_一个简单的文件IO_打印文件内容到输出端【open、write、lseek、read】
#include<stdio.h>#include<string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>int main(){#if 0 FILE*fp = fopen("./my.c", "w+"); if(fp == NULL) { perror原创 2021-09-05 09:47:55 · 117 阅读 · 0 评论 -
83_【82.81复写】用文件IO的方式_判断用户家目录下指定目录,不存在创建,存在检索目录,不存在文件创建一个新的直接退出,或是创建文件,询问三次即退出
动图:#include<stdio.h>#include<string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <sys/stat.h>#include <dirent.h>//读取目录#include <stdlib.h>void s原创 2021-09-05 09:23:53 · 134 阅读 · 0 评论