【Linux系统编程【2】——编写who命令】教程文章相关的互联网学习教程文章

525_linux C编程中IPC管道【图】

全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux 进程间通信的方式还有一种方式是管道,而在最初折腾linux的时候这属于我早期使用的功能之一。不过,在C编程方面接触的还是很少。了解一下基础的C编程,对我了解linux系统的部分运行机理应该会有一定的帮助。 pipe函数的功能是建立管道。 使用的时候需要包含头文件 #include<unistd.h> 函数原型: int pipe(int filedes[2])...

Linux/Unix服务端和客户端Socket编程入门实例【代码】

前言 本章节是用基本的Linux/Unix基本函数编写一个完整的服务器和客户端例子,可在Linux(ubuntu)和Unix(freebsd)上运行,客户端和服务端的功能如下: 客户端从标准输入读入一行,发送到服务端 服务端从网络读取一行,然后输出到客户端 客户端收到服务端的响应,输出这一行到标准输出 服务端 代码如下: #include <unistd.h> #include <sys/types.h> /* basic system data types */ #include <sys/socket.h> /* basic s...

Linux/Unix IO多路复用之poll网络编程(含源码)【代码】

前言 本章节是用基本的Linux/Unix基本函数加上poll调用编写一个完整的服务器和客户端例子,可在Linux(ubuntu)和Unix(freebsd)上运行,客户端和服务端的功能如下: 客户端从标准输入读入一行,发送到服务端 服务端从网络读取一行,然后输出到客户端 客户端收到服务端的响应,输出这一行到标准输出 服务端 代码如下: #include <unistd.h> #include <sys/types.h> /* basic system data types */ #include <sys/socket.h>...

Linux IO多路复用之epoll网络编程(含源码)【代码】

前言 本章节是用基本的Linux基本函数加上epoll调用编写一个完整的服务器和客户端例子,可在Linux上运行,客户端和服务端的功能如下: 客户端从标准输入读入一行,发送到服务端 服务端从网络读取一行,然后输出到客户端 客户端收到服务端的响应,输出这一行到标准输出 服务端 代码如下: #include <unistd.h> #include <sys/types.h> /* basic system data types */ #include <sys/socket.h> /* basic socket definit...

Linux系统编程--线程相关概述【代码】【图】

一、Linux线程开发API概要 1、对于Linux的平台上的线程开发已经有对应的pthread库支持,不需要我们自己去构建,我们主要是了解以及操作这些库。 2、Linux线程开发主要设计的基本概念包括三点: (1)线程 (2)互斥锁(3)条件。这三点里面又包括其他几小点操作方式,详情请见表: 基本概念操作方式对应API线程1、线程的创建pthread_create2、线程的退出pthread_exit3、 线程的等待pthread_join互斥锁1、创建pthread_mutex_init2、...

Linux系统编程34 进程控制 - init 进程和僵死进程【代码】【图】

如下程序,即 fork()求质数 改动: 实验1 父进程不睡眠,201个子进程睡眠 #include <unistd.h> #include <sys/types.h> #include <stdlib.h> #include <stdio.h>#define LEFT 200 #define RIGHT 250int main(void) {int i,j,mark;pid_t pid;for(i = LEFT; i <= RIGHT; i++){pid = fork();if(pid < 0){fprintf(stderr,"fork() failed!\n");exit(1);}else if(pid == 0)//child{mark = 1;for(j = 2; j < i/2; j++){if(i % j ==0){mark...

嵌入式Linux应用基础学习(4)— Framebuffer 应用编程【代码】【图】

嵌入式Linux应用基础学习(4)— Framebuffer 应用编程 一、什么是Framebuffer在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。 Frame 是帧的意思, buffer 是缓冲的意思,这意味着 Framebuffer 就是一块内存,里面保存着一帧图像。 Framebuffer 中保存着一帧图像的每一个像素颜色值,假设 LCD 的分辨率是 1024x768,每一个像素的颜色用 32 位来表示,那么 Framebuffer 的大小就是:1024x768x32/8=3145728 字节。二、涉及的A...

Linux库的分文件编程【代码】【图】

今天是除夕,贴了一上午的对联,吃完午饭就稍微学习一下,晚上就是Happy之夜了 除夕过后,你将涅槃重生,逆风翻盘,这一句,是必胜局! 是的,抖音看到的。。。屁话太多,进入正题: 分文件编程好处: 可以将不同的功能模块交给不同的人做。 网络线程电机超声波 好处: 功能责任划分方便调试主程序简洁 例: 一个含有自定义函数和主函数的代码 #include <stdio.h>int add(int x,int y) {return x+y; }int min(int x,int y...

Linux系统编程33 进程控制 - fork()详解1,与行缓冲,全缓冲的联系,必加fflush()刷新【代码】【图】

1 getpid()/getppid 2 fork()getpid()/getppid NAME getpid, getppid - get process identification SYNOPSIS #include <sys/types.h> #include <unistd.h>pid_t getpid(void);pid_t getppid(void);DESCRIPTION getpid() returns the process ID of the calling process. (This is often used by routines that generate unique temporary filenames.) getppid() returns the process ID of the parent of the calling process.for...

Linux系统编程【3.2】——ls命令优化版和ls -l实现【代码】【图】

前情提要 在笔者的上一篇博客Linux系统编程【3.1】——编写ls命令中,实现了初级版的ls命令,但是与原版ls命令相比,还存在着显示格式和无颜色标记的不同。经过笔者近两天的学习,基本解决了这两个问题,且实现了"ls -l",并对于可选参数"-a"和"-l"有了更好的支持(不管-a,-l输入顺序如何,是"ls -a -l",还是"ls -l -a",还是"ls -al",亦或是"ls -ls",出现位置几何,重复与否,都能正确运行)。 ls显示格式的解决 首先,让我们来...

linux UDP C++网络编程演示【代码】

1.引用头文件 #include <iostream> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> 2.创建数据报套接字 int socket_fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);if (socket_fd<0){perror("创建socket失败");exit(-1);} 3.绑定套接字 struct sockaddr_in server_addr;bzero(&server_addr, sizeof(server_addr));serve...

Linux/UNIX系统编程手册---第30章线程同步之互斥量【代码】【图】

保护对共享变量的访问:互斥量 一、 以非原子方式访问共享资源实例 #include <pthread.h> #include<stdio.h> #include<string.h> #include<stdlib.h> /*********************************************** 代码描述 该程序创建了两个线程,且均执行同一函数。该函数执行一个循环,重复以下步骤:将glob复制 到本地变量loc中,然后递增loc,再把loc复制回glob,以此不断增加全局变量glob的值。 因为loc是分配于线程栈中的自动变量(aut...

ubuntu 20.10 linux select网络编程,同时监听多客户端连接与断开及接收数据【代码】【图】

演示结果: 示例代码: // // Created by linux on 2021/2/5. // #include <iostream> #include <sys/select.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h>using namespace std;int main(int argc,char* argv[]) {cout<<"linux select网络模型演示"<<endl;//变量声明int i=0;//客户端连接索引int nready=0;int maxi=-1;unsigned short port = 8000;//服务监听端口int maxListen...

Linux多进程编程【代码】

fork函数 pid_t fork(void)创建子进程。父子进程各自返回。父进程返回子进程pid。 子进程返回 0。 #include <stdio.h> #include <unistd.h> #include <stdlib.h>int main() {printf("Begin... ");pid_t pid = fork();if (pid < 0){perror("fork err");exit(1);}else if (pid == 0){//子进程printf("I am a child pid, pid = %d, ppid = %d ", getpid(), getppid());}else if (pid > 0){//父进程printf("I am a parent pid, child...

Linux系统编程【2】——编写who命令【代码】【图】

学到的知识点 通过实现who命令,学到了: 1.使用man命令寻找相关信息2.基于文件编程3.体会到c库函数与系统调用的不同4.加深对缓冲技术的理解 who命令的作用 who命令的使用 在控制终端输入: man who结果如下图所示可以看出,who命令的使用很简单,直接在终端输入: who作用就是显示当前登录的用户信息。 who命令的显示结果含义第一列表示已登录用户,第二列表示终端名,第三列表示登录时间,第四列表示用户的登录地址。 如何实现who...