
Linux
文章平均质量分 85
熬混沉静
。
展开
-
进程间通信(三)
信号量与已经介绍过的IPC结构不同,它是一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。原创 2024-05-12 15:33:51 · 397 阅读 · 0 评论 -
进程间通信(二)
共享内存+Linux信号概述原创 2024-05-11 21:16:51 · 896 阅读 · 0 评论 -
进程间通信(一)
在之前我们也有涉及到进程间通信的知识点,比如fork或exec或父进程读取子进程的退出码等,但是这种通信方式很有限,今天来学习进程间通信的其他技术——IPC(InterProcess Communication)。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中Socket和Streams支持不同主机上的两个进程IPC。原创 2024-05-11 16:10:59 · 764 阅读 · 0 评论 -
system函数和popen函数
command);如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。调用完可执行程序后,还会运行之后的代码。原创 2024-05-10 21:11:34 · 381 阅读 · 0 评论 -
exec族函数
在使用fork函数创建新的进程后,我们经常会在新进程中调用exec函数取执行另一个程序。当进程调用exec函数时,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的id并没有改变。原创 2024-05-10 18:28:21 · 1740 阅读 · 0 评论 -
linux中进程相关概念(二)
我们创建子进程的目的,说白了就是让子进程为我们干活,干完活后会正常退出(exit),也有可能没干完异常退出(abort,或ctrl+c)。因此我们需要等待子进程退出,并收集退出状态。子进程退出状态不被收集会编程僵尸进程。在这段代码中,我们只是调用exit(0)退出进程,而没有收集退出状态,因此这个进程会变为僵尸进程,我们可以通过查看进程状态来观察:33父进程id为14191 状态为S+说明正在运行,而子进程id为14192,状态为Z+说明是僵尸进程。原创 2024-05-10 15:12:50 · 1027 阅读 · 1 评论 -
linux中进程相关概念(一)
每个进程都有一个非负整数表示唯一的id,叫做pid,类似身份证pid=0;称为交换进程,作用是进程调度pid=1;称为init进程,作用是系统初始化由fork创建的新进程被称为子进程。fork函数被调用一次,但返回两次。两个返回的唯一区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程pid。将子进程id返回给父进程的理由是:因为一个进程的子进程可以有多个,并且没有一个函数使一个进程可以获得其所有子进程的pid。fork使子进程得到返回值0的理由是。原创 2024-05-09 22:49:30 · 1124 阅读 · 0 评论 -
标准C库对文件的操作
由于是标准C库,因此头文件只需包含#include 即可fopen的api有三个常用的是第一个:**FILE *fopen(const charmode);原创 2024-05-09 15:59:43 · 1092 阅读 · 0 评论 -
Linux中对文件的操作(二)
不要陷入思维定势!!write和read的第二个参数,不一定非得是一个字符数组,只要求是一个指针即可,指针的本质就是地址,因此传入一个地址也是可以的,就像上面的两块代码一样,传入&data1也是可以的!原创 2024-05-05 22:22:47 · 1288 阅读 · 0 评论 -
Linux中对文件的操作(一)
pathname:指的是文件名flags:权限 只读打开O_RDONLY 只写打开O_WRONLY 可读可写打开O_RDWR 以上三个参数中应当只指定一个。若文件不存在则创建它,使用这个选项时,需要同时说明第三个参数mode,用其说明该文件的存取许可权限。如果同时指定了O_CREAT,而文件已经存在,则出错使fd=-1;运行结果:因为当前目录中已经存在file1这个文件了。如果此时不存在,则运行这段代码不会报错,因此运行结果不会有任何反应。每次写都加到文件的尾端。原创 2024-05-04 15:58:46 · 1076 阅读 · 0 评论