![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux环境编程
文章平均质量分 66
专注就可以深
对所做的事情的理解越深,你就会做的越好。
能力是一个综合评价的词,太过虚幻无形,但技能却是可以实实在在一项一项加的。
不是你的日子悠闲,而是你还没想到可以再给自己增加什么技能。
展开
-
Linux内存点滴 用户进程内存空间
经常使用top命令了解进程信息,其中包括内存方面的信息。命令top帮助文档是这么解释各个字段的。VIRT , Virtual Image (kb)RES, Resident size (kb)SHR, Shared Mem size (kb)%MEM, Memory usage(kb)SWAP, Swapped size (kb)CODE, Code size (kb)转载 2014-08-01 15:55:19 · 402 阅读 · 0 评论 -
linux 的sleep()、usleep()、nanosleep()函数的区别
其它时间、日期操作函数:http://blog.csdn.net/u011170660/article/details/38318765原创 2014-08-15 17:09:10 · 25588 阅读 · 2 评论 -
execl函数的用法
用法一:在一个进程中执行另个可执行文件原创 2014-08-14 15:36:04 · 1795 阅读 · 0 评论 -
父子进程的并发性
并行”是指无论从微观还是宏观,二者都是一起执行的,就好像两个人各拿一把铁锨在挖坑,一小时后,每人一个大坑。 而“并发”在微观上不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行,从宏观外来看,好像是这些进程都在执行,这就好像两个人用同一把铁锨,轮流挖坑,一小时后,两个人各挖一个小一点的坑,要想挖两个大一点得坑,一定会用两个小时。 从以上本质不难看出,“并发”执行,在多个进程存在资源转载 2014-08-13 11:09:07 · 4670 阅读 · 0 评论 -
深入分析父子线程、进程终止顺序不同产生的结果
讲到分离线程,先得从僵尸进程讲起(抱歉,确实不知道线程是否有僵尸一说)。关于僵尸进程:一般情况下进程终止的时候,和它相关的系统资源也并不是主动释放的,而是进入一种通常称为“僵尸”(zombie)的状态。它所占有的资源一直被系统保留,直到它的父进程(如果它直接的父进程先于它去世,那么它将被init进程所收养,这个时候init就是它的父进程)显式地调用wait系列函数为其“收尸”。为了让父进程尽快知道转载 2014-08-12 11:40:42 · 889 阅读 · 0 评论 -
文件的建议性锁和强制性锁
fcntl有强大的功能,它能够复制一个现有的描述符,获得/设置文件描述符标记,获得/设置文件状态标记,获得/设置异步I/O所有权,获得/设置纪录锁。当多个用户共同使用,操作一个文件的情况,Linux通常采用的方法就是给文件上锁,来避免共享资源产生竞争的状态。fcntl文件锁有两种类型:建议性锁和强制性锁建议性锁是这样规定的:每个使用上锁文件的进程都要检查是否有锁存在,当然还得尊重已转载 2014-08-12 11:21:46 · 2224 阅读 · 0 评论 -
多线程同步中的条件变量的细节与使用
转自:如同互斥量和读写锁一样,条件变量也需要初始化和回收#includeint pthread_cond_init(pthread_cond_t *restrict cond,pthread_condattr_t *restrict attr);int pthread_cond_destroy(pthread_cond_t *cond);互斥量和读写锁解决了多线程访转载 2014-08-09 22:51:52 · 558 阅读 · 0 评论 -
为何在一个fork的子进程分支中使用_exit函数而不使用exit函数?
‘exit()’与‘_exit()’有不少区别在使用‘fork()’,特别是‘vfork()’时变得很 突出。‘exit()’与‘_exit()’的基本区别在于前一个调用实施与调用库里用户状态结构 (user-mode constructs)有关的清除工作(clean-up),而且调用用户自定义的清除程序 (译者注:自定义清除程序由atexit函数定义,可定义多次,并以倒序执行),相对转载 2014-08-08 10:23:55 · 1127 阅读 · 0 评论 -
memset函数 及 内存操作函数 及 字符串操作函数
void memset(char *str , int c , int count);常用于以下jig原创 2014-07-24 16:54:26 · 2019 阅读 · 0 评论 -
Linux 与 C 的非系统类型定义
ssize_t是signed size_t,size_t是标准C库中定义的,应为unsigned int。使用强制转换可于int类型进行转换原创 2014-08-03 18:57:08 · 438 阅读 · 0 评论 -
linux 的fork 与 exec
学过C语言的都知道,Unix下某个进程的内存分成三部分:代码段,堆栈段,数据段。代码段用来存放程序运行的代码,堆栈段用来存放子程序的局部变量,数据段用来存放全局变量。这在perl里也是一样的。perl的fork调用,跟C的一样,当发生fork调用时,实际上发生如下事:父进程将代码段,堆栈段,数据段完全复制一份给子进程。也就是说,在子进程运行之初,它拥有父进程的一切变量和句柄。例如,父进程申转载 2014-08-01 11:56:12 · 519 阅读 · 0 评论 -
墙上时钟时间 ,用户cpu时间 ,系统cpu时间
墙上时钟时间 ,用户cpu时间 ,系统cpu时间的理解 2013-09-03 09:16:25分类: LINUX时钟时间(墙上时钟时间wall clock time):从进程从开始运行到结束,时钟走过的时间,这其中包含了进程在阻塞和等待状态的时间。用户CPU时间:就是用户的进程获得了CPU资源以后,在用户态执行的时间。系统CPU时间:用户进程获得了CPU转载 2014-08-02 20:52:19 · 1178 阅读 · 0 评论 -
实际用户ID(RUID),有效用户ID(EUID)和设置用户ID(SUID)-----没看懂,先放着吧
实际用户ID,有效用户ID和设置用户ID 看UNIX相关的书时经常能遇到这几个概念,但一直没有好好去理清这几个概念,以致对这几个概念一直一知半解。今天好好区分了一下这几个概念并总结如下。说白了这几个UID引出都是为了系统的权限管理。 下面分别用RUID, EUID,SUID来表示实际用户ID,有效用户ID,设置用户ID。另外用户ID是个整型数,为了说明方便真接使用了转载 2014-08-02 10:27:21 · 1614 阅读 · 0 评论 -
linux解释器原理—— unix环境高级编程
linux解释器原理分类: unix环境高级编程 2013-01-12 12:48 503人阅读 评论(1) 收藏 举报对于会shell编程的人肯定不会对#!/bin/sh感到陌生。这一行字符串到底意味着什么呢?应该明确,所谓解释器就是指#!行后面的可执行程序。 我们从exec函数说起。exec函数总共包括六个函数。#include int execl(const转载 2014-08-02 20:45:15 · 480 阅读 · 0 评论 -
C中的volatile用法(允许随时都会改变的值,且不可优化)
转自:C中的volatile用法volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如: volatile int i=10; in转载 2014-08-01 22:40:50 · 4093 阅读 · 1 评论 -
mmap映射文件至内存( 实现 共享内存 与 文件的另类访问 )
Linux下mmap函数的介绍(2013-5-20 14:46)标签:mmap函数, Linux mmap函数是unix/linux下的系统调用,mmap系统调用并不是完全为了用于共享内存而设计的。它本身提供了不同于一般对普通文件的访问方式,进程可以像读写内存一样对普通文件的操作。而Posix或系统V的共享内存IPC则纯粹用于共享目的,当然mmap()实现共享内存也是其主要应转载 2014-08-01 18:25:13 · 5459 阅读 · 0 评论