首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux系统进程编程(一)

在开始介绍进程之前,我们先来看下面这张照片,这是我们在Windows系统经常会遇到的情况,有时候遇到这种情况,真想砸电脑(太不给力了,特别是在打游戏起劲的时候,你说来了这样一个大招,这谁顶得住):...,记得刚开始学编程的时候,那时候就是从这里开始萌芽的。那么写了这么多函数,为啥要从这里开始“进门”呢,个人理解就是一种规定。...系统里面编程,它也是要准备一些前期工作的:它要有编译链接时的引导代码-------操作系统的应用程序其实在main执行前也需要先执行一段引导代码才能去执行main,我们写应用程序时不用考虑引导代码的问题...在正常情况,一个用户登录之后(我们假设是A用户),A用户的有效用户ID和实际用户ID是相同的,但是如果A用户在某些场景中想要执行一些特权操作,而上面我们说到用户的任何操作,LINUX内核都是通过检验有效用户...它一般在Linux启动时开始执行,系统关闭时才结束。

2.4K10

Linux Input系统应用编程实战

这里还是以最常用的操作系统Linux来进行讲解 在Linux内核中,有非常多的子系统,用于管理很多设备,比如显示系统,输入子系统,音频子系统,电源管理子系统,时钟管理子系统等等,本节我们重点关注Linux...的输入子系统。...先从应用程序的角度来认识input子系统,在此可以从以下这个文件可以看到对应的设备。打开Linux终端,然后输入cat /proc/bus/input/devices可以看到类似以下的内容。...Linux系统为我们提供了这个输入系统操作相关的头文件:#include 在这个文件中,我们可以找到这个结构体: 1//用于描述一个输入事件 2struct input_event...接下来,我们来看一如何来读取鼠标事件,写一段代码测试一: mouse.c 1#include 2#include 3#include <unistd.h

2.6K30
您找到你想要的搜索结果了吗?
是的
没有找到

Linux系统socket编程socket接口介绍(二)

前言 在上一篇文章里面我们介绍了TCP的三次握手和四次挥手过程的介绍以及网络编程里面的一些api接口函数的介绍——Linux系统socket编程之socket接口介绍(一)。...今天我们继续来介绍网络编程里面的其它接口函数,为实战打下 基础;网络编程专题文章拖的有点久,这两天全部把它写完,不能再拖了。...(这个转换完后不能用于网络传输,还需要调用htons或htonl函数才能将主机字节顺序转化为网络字节顺序,这两个函数先不讲,实战遇到的话,再进行解析),具体可以看下面Linux的源文: inet_aton...(2)struct sockaddr,这个结构体是linux的网络编程接口中用来表示IP地址的 标准结构体,bind、connect等函数中都需要这个结构体,这个结构体是兼容IPV4和IPV6的。...在实际编程中这个结构体会被一个struct sockaddr_in或者一个struct sockaddr_in6所填充。

3.5K20

Linux系统socket编程之socket接口介绍(一)

/597961.htm),你就会对这个协议有一个大概的了解(有些地方或许读者和我一样可能也看的不是很明白,但是这对编程阻碍不大),所以我也不打算写这个了(理由是,自己也比较菜,只要大概了解一这部分内容就行...: 在讲解这个之前,你得必须要明白在Linux系统,一切皆是文件,(举个简单的例子,一般我们在Windows系统,你是可以清楚的看到硬盘盘符,并标有大小的,可以直接用鼠标拖拉文件到里面去;而在Linux...系统是看不到的,它是以文件的形式存在的,对它操作可就没那么简单了)。...下面我们来看一Linux系统它的原型: BIND(2) Linux Programmer's Manual...const struct sockaddr *addr:这个参数可以看它的源注解,它里面讲解的那个地址查询,还是用man手册来查看(例如man ipv6): When a socket is

2.8K10

Linux内核跟踪:ftrace hook入门手册

一、前情提要 在前一篇文章《Linux内核跟踪:ftrace hook入门手册(上)》中,我们对部分ftrace hook经典方案中的实现细节进行了优化。本文会深入说明这些优化的原理和目的。...以一般的编程思路,我们可以封装定义一个形式上的hook子程函数(后简称外套子程),在这个外套子程中将传递到系统调用的参数统一结构后,再调用实际实现业务功能hook子程(后简称业务子程)。...hook子程可以直接定义与系统调用函数相同的形式参数来获取系统调用参数值,而返回时也会直接返回到系统调用函数的直接调用方(参考下图[3]): 图5:经典方案中的hook执行流程 然而,由于Linux...,我们很难在过滤器函数中修改或传递更多的参数给外套子程——结果导致在同时存在多个hook目标的情况,外套子程内部难以确定应该调用哪个业务子程。...Linux系统调用的大致过程是,用户程序将系统调用的实际参数设置到特定的寄存器中,然后通过中断指令(int 30)切换到内核空间并实际执行系统调用过程。

1.7K20

LinuxC编程(3)

都是LINUX的一个打开的设备描述符。内核通过这个描述符进行I/O操作。进行I/O操作就有一个性能问题,这个性能问题在于两个条件,一个条件是对同一个FD,有多个客户进行操作时如何更好的排队。...这方法一般不建议使用,因为毕竟信号量是一种比较大的中断操作,会导致系统停顿,而且内核是否支持这种SIGIO信号量,还有SIGIO是否是SOCKET操作以及I/O操作集中于信号处理程序中。...另外因为在不同平台的fd_set长度不同,通常系统默认是FD_SET_SIZE是1024,可以通过修改参数,并且内部实现不一样,所以通常使用一些宏操作进行增删清空。 ?...但是LINUX比较搞,它是上层用SELECT,实际上底层还是用的POLL....在LINUX实际上POLL性能比SELECT要高一点,POLL也是监视FD集合,不过将这个FD集合单独使用一个数据结构pollfd. struct pollfd {           int

5.1K20

Linux系统进程编程之exec族函数解析(四)

系统中引入了exec族函数。...另外,这里的可执行文件既可以是二进制文件,也可以是Linux下任何可执行脚本文件。...2、在Linux中使用exec函数族主要有以下两种情况: a、当进程认为自己不能再为系统和用户做出任何贡献时,就可以调用任何exec 函数族让自己重生。...系统环境变量: 如果用户在执行这个程序时没有传递第三个参数,则程序会自动从父进程继承一份环境变量(默认的,最早来源于OS中的环境变量);如果我们exec的时候使用execle或者execvpe...三、总结: 好了,今天族函数的分享就结束了,后面还会继续分享进程的文章,在最后给大家分享一个有趣的照片,昨天一个网友发的 Linux系统中常见的目录名称以及相应内容: 上面的源代码链接:https:

1.2K30

Linux——系统安装(

接下来我们要进行系统分区,其实就跟windows系统分盘一样,首先我们要选择“标准分区” 图23 然后在这里选择挂载点,默认都是ext4,我们后面要创建的swap是在文件系统类型中进行修改 图24...下一步” 图26 然后要选择一些安装的软件,选择“Basic Server”,接下来就会进入程序安装 图27 等待安装完成后,点击“重新引导“ 图28 接下来进过一系列傻瓜式的操作之后,就能看到Linux...的登陆界面了,账号默认是root,密码是你刚刚设置的密码 图29 Linux安装就讲到这里,接下来我会讲两个VMware虚拟机常用的一些小技巧 l 屏幕快照 VMware虚拟机提供了一个类似于PS中的快照功能...,该功能就是将你当前的状态进行存储下来,如果在以后的某个时间你误操作了系统,将系统损毁或是其他情况,需要恢复,那么就可以调用之前的快照,完美恢复到快照的情况 图30 l 克隆 如果你需要多个和你当前操作系统一模一样的虚拟机...,你可以不必重新创建然后安装,直接克隆即可,而且这个克隆还有个好处,就是不会占用你原本虚拟机大小的内存空间,只会占用一点点内存空间,但是能实现的功能都是一样的 图31 现在,Linux就安装完成了,如果你在安装过程中有任何问题

10.6K50

Linux 系统常用命令速查手册

badblocks -v /dev/hda1 #检查磁盘hda1上的坏磁块 fsck /dev/hda1 #修复/检查hda1磁盘上linux文件系统的完整性 fsck.ext2...dev/hda1 #在hda1分区创建一个linux ext2的文件系统 mke2fs -j /dev/hda1 #在hda1分区创建一个linux ext3(日志型)的文件系统 mkfs...协议的流量 JPS工具 jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux...使用方法:在当前命令行打 jps(需要JAVA_HOME,没有的话,到改程序的目录下打) 。...机器所有的jvm实例,采用rmi协议,默认连接端口为1099(前提是远程服务器提供jstatd服务) #注:jps命令有个地方很不好,似乎只能显示当前用户的java进程,要显示其他用户的还是只能用unix/linux

1.6K30

linux系统编程(3)

[3]信号 (2)System 5 IPC对象进程间通信方式   [1]消息队列   [2]共享内存   [3]信号灯集 (3)socket通信 (4)Android系统中增加...Binder进程间通信方式 Linux 支持以上所有进程间通信方式 三 管道进程间通信 (1)无名管道 特点: 只能用于具有亲缘关系进程间通信(具有亲缘关系的进程具有数据拷贝动作...返回值: 成功返回0,失败返回-1 (2)管道读写规则  读端存在  ,写管道 ---->只要管道没有满,都可以写入数据到管道 读端不存在,写管道 ---->此时写管道没有意义,操作系统会发送...管道中没有数据,读阻塞 写端不存在,读管道 ---->此时管道中读取数据,管道中没有数据,此时不阻塞,立即返回,返回值0 (3)有名管道 特点:可以用于任意进程间通信,它是一种特殊的文件,在文件系统存在名字...SIGSTOP 不能忽略 捕捉   当进程收到信号,此时执行的信号处理函数  默认   大部分信号对进程的默认操作方式都是杀死进程   子进程状态发生改变的时候,操作系统向父进程发送

1K20

Linux系统进程编程(二)

哈哈哈,听到僵尸两个字是不是有点小害怕,言归正传,在Linux系统中,我们要明白:进程在运行时是需要消耗系统资源(内存、IO),进程终止时理应完全释放这些资源(如果进程消亡后仍然没有释放相应资源则这些资源就丢失了...),所以linux系统设计时规定:每一个进程退出时,操作系统会自动回收这个进程涉及到的所有的资源(譬如malloc申请的内容没有free时,当前进程结束时这个内存会被释放,譬如open打开的文件没有close...同时,linux系统规定:所有的孤儿进程都自动成为一个特殊进程(进程1,也就是init进程)的子进程。...下面我来演示一: #include #include #include int main(void) { pid_t p1 = -...1; p1 = fork(); // 返回2次 if (p1 == 0) { // 这里一定是子进程 // 先sleep一让父进程先运行,先死 sleep(

1.6K10

linuxSocket编程(一)简介

简介 Socket理论 Socket工作流程 核心函数讲解 服务的如何获取客户端的信息 字符串ip和网络二进制的转换 大小端问题 示例源代码 Linux内核源码 Socket理论 socket起源于Unix...,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。...注意: 其实socket也没有层的概念,它只是一个facade设计模式的应用,让编程变的更简单。是一个软件抽象层。在网络编程中,我们大量用的都是通过socket实现的。...下图显示,操作系统如何把文件描述符实现为一个指针数组,这些指针指向内部数据结构。 对于每个程序系统都有一张单独的表。精确地讲,系统为每个运行的进程维护一张单独的文件描述符表。...操作系统把该描述符作为索引访问进程描述符表,通过指针找到保存该文件所有的信息的数据结构。 文件描述符和文件指针的区别: 文件描述符:在linux系统中打开文件就会获得文件描述符,它是个很小的正整数。

3.6K23

linux的shell脚本编程

它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。...因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键。...Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符执行...有跨平台(操作系统)移植需求(一般使用C 或Java)。 复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等)。 对于影响系统全局性的关键任务应用。...注:推荐给所有变量加上花括号,这是个好的编程习惯。

2.3K20

Linux系统编程Linux背景知识

目录 前言 1.操作系统(os) 2.Linux发展史 2.1UNIX发展史 2.2Linux发展史 3.Linux开源 4.Linux官网 5.企业应用现状 6.Linux发行版本 7.结语 1.操作系统...这是操作系统的根本要义!! Linux操作系统是一个免费且开源的操作系统,它基于Unix操作系统。...操作系统可以分为不同的类型,常见的操作系统包括Windows、macOS、Linux等。 2.Linux发展史 在这里简要介绍Linux的发展史。要说Linux,还得从UNIX开始介绍。...严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。...国内如中标麒麟Linux、红旗Linux、深度Linux系统软件厂商都推出的Linux桌面操作系统,目前已经在政府、企业、OEM等领域得到了广泛应用。

1010

Linux的文件IO编程

Linux 系统调用(system call)是指操作系统提供给用户程序的一组“特殊接口”,用户程序可以通过这组“特殊”接口来获得操作系统提供的特殊服务。...在 Linux 中,用户程序不能直接访问内核提供的服务,必须通过系统调用来使用内核提供的服务。...Linux 中的用户编程接口(API)遵循了 UNIX 中最流行的应用编程界面标准—— POSIX。这些系统调用编程接口主要是通过 C 库(libc)实现的。...往期传送门: 史上最全的Linux常用命令汇总(超详细!...)定义的一组函数 不提供缓冲机制,每次读写操作都执行系统调用 核心概念是文件描述符 访问各种类型文件 文件描述符 每个打开文件对应一个文件描述符 文件描述符是一个非负整数,Linux为程序中每个打开的文件分配一个文件描述符

2.4K10

linux环境的时间编程

Linux提供了丰富的api以供开发者们处理和时间相关的问题。然而这些接口看似各自为政实则有有着千丝万缕的联系,在学习和时间中引发了各种各样的混乱。...在程序看来时间的定义是灵活多变的,不同的定义时间的计算是不同的,因此有必要仔细区分。...单调时间的起点POSIX标准并没有明确指定,但在Linux上是以系统启动的时间为起点的。...总结一,前两种是我们接触最多的,系统时间最常见于date time的处理,单调时间则是计时功能和定时器的基石;而cpu time虽然用的少但是在衡量程序性能时是一个重要的参考指标。...在不引入第三方库和自己手动计算的情况Linux处理时区的手段只有以下两种: 函数自己定义参数和返回值使用local time还是UTC time; 系统根据环境变量TZ以及配置文件/etc/localtime

3.3K30
领券