网站做图分辨率是多少有没有专门做美食海报的网站

张小明 2026/1/10 19:22:24
网站做图分辨率是多少,有没有专门做美食海报的网站,如何给网站加cdn,wordpress主题删不掉进程间通信IPC进程间通信方式IPC早期的进程间通信#xff1a;无名管道(pipe)、有名管道(fifo)、信号(signal)system V IPC对象共享内存(share memory)、信号灯集(semaphore)、消息队列(message queue)BSDsocket套接字无名管道特点只能用于具有亲缘关系的进程之间通信具有固定的…进程间通信IPC进程间通信方式IPC早期的进程间通信无名管道(pipe)、有名管道(fifo)、信号(signal)system V IPC对象共享内存(share memory)、信号灯集(semaphore)、消息队列(message queue)BSDsocket套接字无名管道特点只能用于具有亲缘关系的进程之间通信具有固定的读端和写端半双工通信模式单工只能单向通信 广播半双工可以双向通信但是同一时间不可以同时发送 对讲机全双工可以双向同时通信 电话管道可以看成是一种特殊的文件对于它的读写可以使用文件IO如read、write函数管道是基于文件描述符的通信方式。当一个管道建立时它会创建两个文件描述符fd[0]和fd[1]。其中fd[0]固定用于读管道而fd[1]固定用于写管道。函数接口intpipe(intfd[2])功能创建无名管道参数文件描述符fd[0]读端 fd[1]写端返回值成功0失败-1有名管道特点有名管道可以使互不相关的两个进程互相通信有名管道可以通过路径名来指出并在文件系统中可见但内容存放在内存中。但是读写数据不会存在文件中而是在管道中。进程通过文件IO来操作有名管道有名管道遵循先进先出规则不支持如lseek()操作函数接口intmkfifo(constchar*filename,mode_tmode);功能创建有名管道参数filename有名管道文件名mode权限返回值成功0失败-1并设置errno号#includestdio.h#include sys/types.h#include sys/stat.h#include errno.hintmain(intargc,charconst*argv[]){// 创建有名管道// fifo管道文件的权限值是664// 因为我指定的是666 它和umask取反之后按位相与嘛if(mkfifo(fifo,0666)0){// 如果返回的错误码等于EEXIST我并不希望我们的程序退出if(errnoEEXIST){printf(file exist\n);}// 如果是其他的错误再让它打印错误信息并returnelse{perror(mkfifo error);return-1;}}printf(mkfifo success\n);return0;}补充当管道文件存在(报错提示file exists)时的处理方式判断errno的值为EEXIST时只是打印提示语句if(errnoEEXIST)注意代码中出现errno需要添加头文件#include errno.h注意函数只是在路径下创建管道文件往管道中写的数据是存在内核空间中的。步骤先创建有名管道mkfifo,然后再文件IO的open获取文件描述符之后才能读写read/write文件。信号kill -l显示系统中的信号kill -num PID给某个进程发送信号信号是进程通信方式中的唯一的一种异步的方式同步按照一定顺序去执行异步没有顺序的它不要求先后顺序它是来什么信号处理什么信号概念信号是在软件层次上对中断机制的一种模拟是一种异步通信方式信号可以直接进行用户空间进程和内核进程之间的交互内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。如果该进程当前并未处于执行态则该信号就由内核保存起来直到该进程恢复执行再传递给它如果一个信号被进程设置为阻塞则该信号的传递被延迟直到其阻塞被取消时才被传递给进程。信号的响应方式忽略信号对信号不做任何的处理但是有两个信号不能忽略即SIGKILL、SIGSTOP捕捉信号定义信号处理函数当信号发生时执行相应的处理函数执行默认(缺省)操作Linux对每种信号都规定了默认操作信号种类SIGINT2中断信号Ctrl-C 产生用于中断进程SIGQUIT3退出信号 Ctrl\ 产生用于退出进程并生成核心转储文件SIGKILL9终止信号用于强制终止进程。此信号不能被捕获或忽略。SIGALRM14闹钟信号当由 alarm() 函数设置的定时器超时时产生。SIGTERM15终止信号用于请求终止进程。此信号可以被捕获或忽略。terminationSIGCHLD17子进程状态改变信号当子进程停止或终止时产生。SIGCONT18继续执行信号用于恢复先前停止的进程。SIGSTOP19停止执行信号用于强制停止进程。此信号不能被捕获或忽略。SIGTSTP20键盘停止信号通常由用户按下 Ctrl-Z 产生用于请求停止进程。函数接口信号发送和挂起#include sys/types.h#include signal.hintkill(pid_tpid,intsig);功能信号发送参数pid指定的进程sig要发送的信号返回值成功0失败-1#include signal.hintraise(intsig);功能进程向自己发送信号参数sig信号返回值成功0失败-1#include unistd.hintpause(void);功能用于将调用进程挂起直到收到被捕获处理的信号为止#include sys/types.h#include signal.h#include unistd.hintmain(intargc,charconst*argv[]){// kill(getpid(), SIGKILL);// raise(SIGKILL);// while(1);pause();// 将进程挂起作用和死循环类似但是不占用CPUreturn0;}父子之间进行信号发送#include stdio.h#include sys/types.h#include signal.h#include unistd.hintmain(intargc,charconst*argv[]){pid_tpid;pidfork();if(pid0){perror(fork err);return-1;}// 当返回值为0相当于在子进程中运行elseif(pid0){sleep(3);kill(getppid(),SIGKILL);}// 当返回值大于零的时候相当于在父进程中运行else{while(1){printf(in the parent %d %d\n,pid,getpid());}}return0;}定时器#include unistd.hunsignedintalarm(unsignedintseconds);功能在进程中设置一个定时器当定时器指定的时间到了会向进程发送SIGALRM信号参数seconds定时时间单位秒s返回值如果调用此alarm()前进程中已经设置了闹钟时间则返回上一个闹钟时间的剩余时间否则返回0。注意一个进程只能有一个闹钟时间。如果在调用alarm时已设置过闹钟时间则之前的闹钟时间被新值所代替常用操作取消定时器alarm(0)返回旧闹钟余下秒数#include stdio.h#include sys/types.h#include signal.h#include unistd.hintmain(intargc,charconst*argv[]){printf(%d\n,alarm(10));// 第一次调用返回 0sleep(2);printf(%d\n,alarm(3));// 不是第一次调用返回上一次闹钟剩余的时间pause();// 让进程不结束等待闹钟// linux 系统对SIGALRM默认处理方案就是结束进程return0;}信号处理函数 signal#include signal.htypedefvoid(*sighandler_t)(int);sighandler_tsignal(intsignum,sighandler_thandler);功能信号处理函数参数signum要处理的信号handler信号处理方式SIG_IGN忽略信号(忽略 ignoreSIG_DFL执行默认操作 默认defaulthandler捕捉信号(handler为函数名可以自定义)voidhandler(intsig){}//函数名可以自定义, 参数为要处理的信号返回值成功设置之前的信号处理方式失败-1#include stdio.h#include sys/types.h#include signal.h#include unistd.hvoidhandler(intsig){printf(handler:%d\n,sig);}intmain(intargc,charconst*argv[]){// signal(SIGINT, SIG_IGN); // 忽略信号// signal(SIGINT, SIG_DFL); // 执行默认信号signal(SIGINT,handler);while(1);return0;}共享内存在物理内存中申请一块空间应用程序可以映射到这块空间进行直接读写操作。特点共享内存是一种最为高效的进程间通信方式进程可以直接读写内存而不需要任何数据的拷贝为了在多个进程间交换信息内核专门留出了一块内存区可以由需要访问的进程将其映射到自己的私有地址空间进程就可以直接读写这一内存区而不需要进行数据的拷贝从而大大提高的效率。由于多个进程共享一段内存因此也需要依靠某种同步机制如互斥锁和信号量等步骤创建唯一key值 ftok创建或打开共享内存 shmget映射共享内存到用户空间(拿到映射的地址后就可以操作共享内存) shmat撤销映射 shmdt删除共享内存 shmctl函数接口创建key的值#include sys/types.h#include sys/ipc.hkey_t ftok(const char *pathname, int proj_id);功能创建key值参数: pathname: 文件名proj_id取整数的低8位数据返回值成功key值失败-1创建或打开共享内存#include sys/shm.hint shmget(key_t key, size_t size, int shmflg);功能创建或打开共享内存参数key 键值size共享内存的大小创建 检测错误shmflgIPC_CREAT | IPC_EXCL | 0777 创建共享内存时候的权限返回值成功shmid 共享内存的id出错-1映射共享内存到用户空间#include sys/shm.hvoid *shmat(int shmid, const void *shmaddr, int shmflg);功能映射共享内存即把指定的共享内存映射到进程的地址空间用于访问参数shmid共享内存的id号shmadd一般为NULL表示由系统自动完成映射如果不为NULL那么由用户指定shmflgSHM_RDONLYH就是对该共享内存进行只读操作0 可读可写返回值成功完成映射后的地址出错(void *)-1的地址撤销映射 shmdt#include sys/shm.hint shmdt(const void *shmaddr);功能取消映射参数shmaddr要取消映射的共享内存地址返回值成功0失败-1删除共享内存 shmctl#include sys/shm.hint shmctl(int shmid, int cmd, struct shmid_ds *buf);功能(删除共享内存), 对共享内存进行各种操作参数shmid 共享内存idcmd IPC_STAT 获取shmid属性信息存放在第三个参数IPC_SET设置shmid属性信息要设置的属性存放在第三个参数IPC_RMID删除共享内存此时第三个参数为NULLbuf 是一个结构体指针但是我们是删除共享内存所以没有意义我们直接设置为NULL就可以返回值成功 0失败 -1操作命令ipcs -m查看信号灯集ipcrm -m shmid删除信号灯集程序实现信号灯集特点信号灯(semaphore)也叫信号量。它是不同进程间或一个给定进程内部不同线程间同步的机制通过信号灯集实现共享内存的同步操作。步骤创建key值ftok创建或打开信号灯集: semget初始化信号灯: semctlPV操作semop删除信号灯集: semctl操作命令ipcs -s查看信号灯集ipcrm -s semid删除信号灯集函数接口创建信号灯集#include sys/sem.hint semget(key_t key, int nsems, int semflg);功能创建/打开信号灯参数keyftok产生的key值nsems信号灯集中包含的信号灯数目semflg信号灯集的访问权限通常为IPC_CREAT | 0666返回值成功信号灯集ID失败-1初始化或删除信号灯集#includesys/sem.hintsemctl(intsemid,intsemnum,intcmd,...);功能信号灯集的控制(初始化、删除)参数semid信号灯集idsemnum要操作集合中的信号灯编号cmdGETVAL获取信号灯的值SETVAL设置信号灯的值IPC_RMID从系统中删除信号灯集合...当cmd为SETVAL需要传递共用体返回值成功0失败-1共用体格式unionsemun{intval;/* 信号量的初值 *///其余参数不关心};补充当cmd为SETVAL时需要传递第四个参数类型为共用体用法unionsemun{intval;};unionsemun sem;sem.val10;semctl(semid,0,SETVAL,sem);//对编号为0的信号灯设置初值为10当cmd为IPC_RMID时表示删除信号灯集用法semctl(semid, 0, IPC_RMID) // 0表示信号灯的编号指定任意一个即可删除当cmd为GETVAL时表示获取信号灯的值用法printf(%d\n, semctl(semid, 0, GETVAL));pv操作int semop ( int semid, struct sembuf *opsptr, size_t nops);功能对信号灯集合中的信号量进行PV操作参数semid信号灯集IDopsptr:操作方式nops: 要操作的信号灯的个数 1个返回值成功 0失败-1struct sembuf {short sem_num; // 要操作的信号灯的编号short sem_op; // 0 : 等待直到信号灯的值变成0// 1 : 释放资源V操作// -1 : 分配资源P操作short sem_flg; // 0阻塞,IPC_NOWAIT, SEM_UNDO};消息队列特点消息队列是IPC对象的一种(活动在内核级别的一种进程间通信的工具)消息队列就是一个消息的列表。用户可以在消息队列中添加消息、读取消息等。消息队列可以按照类型来发送/接收消息在linux下消息队列的大小有限制。消息队列个数最多为16个消息队列总容量最多为16384字节每个消息内容最多为8192字节。消息是通过链表的方式依次进行添加可以通过类型来区分添加的是那种类型的数据同种类型的数据在读取的时候是按照队列的方式读取的不同类型的数据是按照类型进行读取步骤创建key值创建或打开消息队列 msgget (message deque)添加消息 msgsnd (send)读取消息 msgrcv (recive)删除消息队列 msgctl操作命令ipcs -q: 查看消息队列ipcrm -q msgid: 删除消息队列注意有时候可能创建失败或者msgid为0所以用命令看看删了重新创建就可以了。函数接口创建或打开消息队列intmsgget(key_tkey,intflag);功能创建或打开一个消息队列参数 key值flag创建消息队列的权限IPC_CREAT|IPC_EXCL|0666返回值成功msgid失败-1添加消息int msgsnd(int msgid, const void *msgp, size_t size, int flag);功能添加消息参数msgid消息队列的IDmsgp指向消息的指针。常用消息结构msgbuf如下struct msgbuf{long mtype; //消息类型 值0char mtext[N]} //消息正文}size发送的消息正文的字节数flagIPC_NOWAIT消息没有发送完成函数也会立即返回0直到发送完成函数才返回返回值成功0失败-1使用msgsnd(msgid, msg,sizeof(msg)-sizeof(long), 0)注意消息结构除了第一个成员必须为long类型外其他成员可以根据应用的需求自行定义。读取消息intmsgrcv(intmsgid,void*msgp,size_tsize,longmsgtype,intflag);功能读取消息参数msgid消息队列的IDmsgp存放读取消息的空间size接受的消息正文的字节数(sizeof(msgp)-sizeof(long))msgtype0接收消息队列中第一个消息。大于0接收消息队列中第一个类型为msgtyp的消息.小于0接收消息队列中类型值不小于msgtyp的绝对值且类型值又最小的消息。flag0若无消息函数会一直阻塞IPC_NOWAIT若没有消息进程会立即返回ENOMSG返回值成功接收到的消息的长度失败-1删除消息队列intmsgctl(intmsgqid,intcmd,structmsqid_ds*buf);功能对消息队列的操作删除消息队列参数msqid消息队列的队列IDcmdIPC_STAT读取消息队列的属性并将其保存在buf指向的缓冲区中。IPC_SET设置消息队列的属性。这个值取自buf参数。IPC_RMID从系统中删除消息队列。buf消息队列缓冲区返回值成功0失败-1用法msgctl(msgid,IPC_RMID,NULL);
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站开发充值功能外贸响应式网站

Langchain-Chatchat能否支持数据库直连知识源? 在企业智能化转型的浪潮中,越来越多组织开始构建基于大模型的知识问答系统。然而,一个现实难题摆在面前:企业的核心知识往往并不存放在PDF或Word文档里,而是深藏于MySQL、…

张小明 2026/1/2 2:41:16 网站建设

国外购物网站系统广州建设专业网站

SQLServer2019安装步骤教程对ACE-Step数据存储层设计的启示 在生成式AI迅猛发展的今天,音乐创作正经历一场静默却深刻的变革。曾经依赖专业作曲家与复杂DAW(数字音频工作站)的工作流程,如今正被像 ACE-Step 这样的开源AI模型逐步重…

张小明 2026/1/2 2:41:16 网站建设

网站建设百度首页外贸企业论坛网站建设

GPT-SoVITS模型蒸馏方案:从大模型到轻量化部署 在智能语音交互日益普及的今天,用户不再满足于“能说话”的机器助手,而是期待一个音色独特、表达自然、具备个性化的数字声音形象。然而,传统语音合成系统往往需要数小时高质量录音…

张小明 2026/1/2 2:41:14 网站建设

如何做网站宣传自己宣传册设计与制作教程

还在为AI创作工具的选择而烦恼吗?今天为大家介绍一款真正能在本地运行的强大AI图像生成模型——Flux.1 Kontext Dev。作为Black Forest Labs的最新开源力作,这款拥有120亿参数的扩散transformer模型,将彻底改变你的AI创作体验。 【免费下载链…

张小明 2026/1/10 0:00:37 网站建设

门户网站如何做推广电脑企业网站设计

3步搞定城通网盘下载限制:免费直连地址获取完整指南 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘的下载限制而烦恼吗?ctfileGet这个开源项目能够帮你快速获取城…

张小明 2026/1/9 16:15:26 网站建设

绍兴网站建设08keji想接网站自己做

还在为心仪的B站视频无法离线保存而困扰吗?我们发现,随着数字内容消费需求的增长,高效获取优质视频资源已成为现代用户的共同诉求。DownKyi作为专业的哔哩哔哩视频下载解决方案,正以其独特的功能优势重新定义视频下载体验。 【免费…

张小明 2026/1/2 2:41:17 网站建设