![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux文件编程、进程、进程间通信、线程、网络编程
文章平均质量分 86
zhezhehenkenai
这个作者很懒,什么都没留下…
展开
-
exec族函数、system函数、popen函数
exec函数族提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。另外,这里的可执行文件既可以是二进制文件,也可以是Linux下任何可执行的脚本文件。l : 使用参数列表p:使用文件名,并从PATH环境进行寻找可执行文件v:应先构造一个指向各参数的指针数组,然后将该数组的地址作为这些函数的参数。原创 2024-01-29 17:31:04 · 925 阅读 · 0 评论 -
创建进程、进程终止、进程等待及进程一些概念的补充
由于进程具有独立性,进程在执行 fork相应代码时,会在操作系统内部进行写时拷贝,使 fork对应的进程可以返回两个不同的值,再让对应的父子进程根据自己返回的 id,去执行 if 或 else if 中的代码内容。也就是说,孩子找父亲是具有唯一性的。通常情况下,父子代码共享,父子进程在不写入(不修改共享部分的数据)时,对应的数据也是共享的。我们可以从上面的代码发现,在使用fork之后,pid的值出现了两种分别是43676、43677,但是其中有一项与没使用fork时,一样,用下面一张图来对其进行解释。原创 2024-01-28 17:48:16 · 945 阅读 · 1 评论 -
进程相关概念及C程序的存储空间的分配
我们在编写完代码并运行起来时,在我们的磁盘中会形成一个可执行文件,当我们双击这个可执行文件时(程序时),这个程序会加载到内存中,而这个时候我们不能把它叫做程序了,应该叫做进程。当一个程序加载到内存中,操作系统要为刚刚加载到内存的程序创建一个结构体(PCB),进程信息被放在这个结构体中(PCB),可以理解为PCB是进程的属性的集合。为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。cpu中的资源是有限的,不可能多个进程一起在CPU上运行,利用优先级把进程有效的先后排好,改善了系统的性能。原创 2024-01-20 17:30:04 · 1191 阅读 · 0 评论 -
标准C库对文件的操作——fopen、fread、fwrite的简单使用及open、read、write区别
在内存中开辟一个“缓冲区”,为程序里每一个文件使用,当执行读文件操作时,从磁盘文件将数据先读入内存“缓冲区”,装满后再从内存“缓冲区”依次读入接收的变量。由此可以看出,内存“缓冲区”的大小,影响着实际操作外在的次数,内存“缓冲区”越大,则操作外存的次数就越少,执行速度就越快,效率就越高。系统调用write的效率取决于你buffer的大小和你要写入的总数量,如果buffer太小,你进入内核空间的次数大增,效率就低下。都用fread 和fwrite,它自动分配缓存,速度会很快,比自己来做要简单。原创 2024-01-19 13:51:56 · 1724 阅读 · 1 评论 -
实现linux cp指令的代码
或者main(int argc, char *argv[], char *enpv[]);int argc:整型,其中包括的是命令行参数的个数(如下图展示)char **argv:二维的char型指针,存放命令行参数字符串。char **enpv:二维的char型指针,存放环境变量。4、把写入的buf中的文件内容读取到demo2.c中。2、把demo1.c文件中的内容写到buf上。3、创建/打开demo2.c文件。原创 2024-01-18 17:20:20 · 441 阅读 · 1 评论 -
linux文件编程
在linux下一切皆文件,文件描述符是内核为了高效的管理已经被打开的文件所创建的索引,它是一个非负整数,用于指代被打开的文件,所有执行I/O操作的系统调用都是通过文件描述符完成的。从上面我们会发下,open函数如果调用,打开一个存在的文件,则会返回一个fd(file description),这就是前面介绍文件描述符及open函数创建文件描述符的方式,create函数亦是同理。O_TRUNC:属性去打开文件时,如果这个文件中本来是有内容的,而且为只读或只写成功打开,则将其长度截短为0。原创 2024-01-18 16:44:26 · 949 阅读 · 1 评论