![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
好梦成真Kevin
Never ever give up.
展开
-
基于TCP协议的socket通信(Linux)
以下两个程序分别模拟了服务器端和客户端所做的动作: 服务器在和客户端建立连接后, 每1s向客户端发送字符串"a piece of message from server.", 客户端每1s接受一次数据, 并将接收到的数据显示到终端. 我们必须考虑当服务器端先结束运行时, 客户端该做出怎么样的动作: 是继续接收空数据, 还是结束运行. 当然, 客户端应该结束运行,...原创 2019-07-05 08:52:04 · 275 阅读 · 0 评论 -
两台Linux虚拟机socket通信(Version 1.0)
下面的两个程序实现了这样的功能: 客户端每1s产生一个随机数, 之后将产生的随机数转为字符串类型, 发送至服务端; 服务端在接收到数据后通过printf()函数将这个随机数显示到终端. 这个程序的思路可用于PC机和ARM开发板间的数据通信. // server.c 服务端#include <stdio.h>#include <stdlib.h>#include...原创 2019-07-07 09:19:41 · 2195 阅读 · 6 评论 -
两台ubuntu虚拟机的socket通信讲解
在实验开始前, 我们要准备好两台ubuntu18.04虚拟机, 并在安装完成后将它们开启(主机内存要足够大, 本机内存16G, 在开启两台虚拟机后内存占用已达45%: 若内存较小, 则可将ubuntu虚拟机的内存调为1G或更小, 但会收到较差的使用体验).注: 下图为两台ubuntu18.04虚拟机已安装好后的情况. 两台ubuntu虚拟机的内存都设为2G, 处理器都为双核(1...原创 2019-07-06 21:16:19 · 4393 阅读 · 3 评论 -
Linux之命令行下文件描述符重定向
在命令行下执行 $touch file.txt $ls –l >file.txt, cat命令查看file.txt内容。文件file已通过gedit 编辑工具生成在终端下执行ls – l命令,观察输出结果执行命令ls -l > file,并查看文件file内的内容分析:命令ls -l > file执行后,实现了文件描述符的重定向:现在ls -...原创 2019-07-06 09:02:36 · 244 阅读 · 0 评论 -
Linux之sleep()自实现
使用alarm,pause,signal函数,编写程序sleep1,实现sleep函数的功能.程序源代码:#include<unistd.h>#include<signal.h>#include<stdio.h>#include<string.h>void wait1(){ ;}void sleep1()...原创 2019-07-06 09:00:30 · 736 阅读 · 0 评论 -
Linux之在命令行下创建有名管道FIFO
命令行下创建有名管道myfifo,ls –l查看,分别在两个终端运行cat < myfifo 和echo hello > myfifo分析执行情况,将cat在后台运行,echo在前台运行,执行情况如何?分析FIFO的打开规则。先让我们来创建一个命名管道named_FIFO,并用ls -l命令查看是否创建成功.分别在两个终端运行cat < named_FIFO...原创 2019-07-06 08:58:16 · 2285 阅读 · 0 评论 -
Linux之popen()函数实现重定向功能
设计一个程序,要求利用popen函数,实现“ls –l > file.txt”的重定向功能,file.txt在程序中创建。我们先来观赏一个很好的例子上述例子摘取自https://www.cnblogs.com/hnrainll/archive/2011/07/23/2114857.html .接下来根据阅读后的启发,我写出了如下程序。#include<std...原创 2019-07-06 08:55:46 · 989 阅读 · 0 评论 -
Linux之popen()函数实现ls -l | grep fifo的功能
设计一程序,要求用popen()函数,实现“ls –l | grep fifo”的功能。程序源代码:#include<stdio.h>#include<string.h>int main (){ FILE *fp; int num; char buf[500]; memset(buf,0,sizeof(buf...原创 2019-07-06 08:52:05 · 1583 阅读 · 0 评论 -
Linux信号处理函数sigprocmask()使用方法讲解
我们看一下sigprocmask()函数的使用方法.下面我们再写一个简单的例子来熟悉sigprocmask()函数及其配套使用函数.SIG_UNBLOCK参数的使用:#include <signal.h>#include <stdio.h>#include <stdlib.h>int main(){ in...原创 2019-07-05 15:55:02 · 1644 阅读 · 0 评论 -
Linux信号处理函数signal()使用讲解
让我们来了解一下signal()函数的使用方法及特性.有了上述知识的铺垫,我们来写一个简单的signal()处理程序.#include <signal.h>#include <stdio.h>#include <stdlib.h>void print(){ printf("%s\n", "Hello worl...原创 2019-07-05 15:51:14 · 690 阅读 · 0 评论 -
Linux定时器alarm()用法讲解
运行程序,分析程序执行结果。#include<unistd.h>#include<signal.h>#include<stdio.h>void handler() { printf("Hello\n"); signal(SIGALRM,handler); alarm(5);}main(){ int i; h...原创 2019-07-05 15:49:26 · 3599 阅读 · 0 评论 -
Linux命名管道FIFO实现进程间的文件传输
设计两个程序,要求用命名管道FIFO,实现进程间的文件传输功能,即实现进程A将文件file1的内容复制给进程B。file1是已经存在的文件,file2可以不存在,如果存在就清空原来的内容。接下来让我们了解一下有名管道的使用.我们先以一个简单的例子来熟悉FIFO的使用.#include <unistd.h>#include <stdlib.h>#inc...原创 2019-07-05 15:41:34 · 4633 阅读 · 0 评论 -
Linux有名管道FIFO的简单应用(一程序获取另外一程序的执行结果)
设计两个程序,一个hello程序,输出”Hello, I am process 进程id”;另一程序获得hello程序的输出结果并显示。可用pipe或popen和pclose函数实现。3_7_A:#include<stdio.h>#include<string.h>#include<unistd.h>int main(){...原创 2019-07-05 15:36:48 · 840 阅读 · 0 评论 -
Linux无名管道pipe的使用(父子进程)
我们来看一下pipe()函数的使用.我构思了一个简单的父子进程通信函数,以帮助大家初步学习对无名管道pipe的操作 ,程序源代码如下.#include<stdio.h>#include<unistd.h>#include<string.h>void process_communication(){ int fd[2];...原创 2019-07-05 15:29:36 · 1087 阅读 · 0 评论 -
Linux僵尸进程的三种处理方式
3.1分析以下程序,会有僵尸进程出现吗?后台运行该程序,前台用ps命令查看进程,判断是否出现僵尸进程,如果出现,请用三种方法(wait/waitpid,两次fork,捕捉信号SIGCHLD)修改程序处理僵尸进程。#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<...原创 2019-07-05 09:14:35 · 20669 阅读 · 0 评论 -
用两次fork()避免僵尸进程
先给出一个会产生僵尸进程的程序,运行后观察结果.#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/wait.h>int main(){ int pid; pid = fork(); if(pid > 0)...原创 2019-07-05 09:12:06 · 972 阅读 · 0 评论 -
主机(client)与ubuntu虚拟机(server)的通信(Version 1.0)
以下两个程序实现了ubuntu虚拟机 -> 主机VS2017的数据通信. 虽然实现了数据的通信, 但是有个问题值得我们注意: 当建立连接后, 我们在一段时间后关闭client程序(VS2017), 此时ubuntu端的send()函数会阻塞------这样一来, 每当我们在VS2017端关闭一次客户端程序, ubuntu端就会多一个浪费内存空间的服务端处理进程: 当VS2017...原创 2019-07-07 12:33:52 · 714 阅读 · 0 评论