<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
近期以来,静观世界
Linux
业界的各种动向,令人心如潮涌,不得安宁。此话怎么讲?
十几年来,
Linux
已经形成一股世界性的发展潮流,任何势力也阻挡不了。许多世界级的大公司都参与其中。在昨天闭幕的
Intel
信息技术峰会上(
IDF
2010
),这一点看得非常清楚。在消费电子领域,
MeeGo
指引着产业发展方向;在计算机桌面创新方面,
Ubuntu
一马当先。
4
月
14
日,《
Linux
基金会》执行主席
Jim
Zemlin
在《
Linux
协作峰会》上发表主题讲演,他指出:
Linux
正好处在几股推动开源应用的重要
IT
势力(或倾向)的交汇处,它必定是个大赢家(
The
big
winner
)。他说:在未来几年,在消费电子领域,
Linux
(平台)必将大方光彩。他确信,在
2
~
5
年内,基于
Linux
的电子消费产品不仅品质极佳而且完全免费(
both
fabulous and
free
)。他的意思是说,到了那时,(
Linux
)客户将不必再去购买消费电子产品的硬件和软件,只需支付服务费(比如,月租费)即可。面对这种发展 ......
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
pthread_mutex_t wqy_mutex_pause = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t wqy_cond_pause = PTHREAD_COND_INITIALIZER;
bool wqy_pthread_pause = false;
void wqy_pthread_suspend(void)
{
if (wqy_pthread_pause == false)
{
pthread_mutex_lock( &wqy_mutex_pause );
wqy_pthread_pause = true;
printf("------pthread pause------\n");
pthread_mutex_unlock( &wqy_mutex_pause );
}
else
{
printf("pthread suspend already\n");
}
}
void wqy_pthread_resume(void)
{
if (wqy_pthread_pause == true)
{
pthread_mutex_lock(&wqy_mutex_pause);
wqy_pthread_pause = false;
pthread_cond_broadcast(&wqy_cond_pause);
printf("------pthread resume------\n");
pthread_mutex_unlock(&wqy_mutex_pause);
}
else
{
printf("pthread resume already\n");
}
}
void wqy_pthread_pause_location(void)
{
pthread_mutex_lock(&wqy_mutex_pause);
......
如果在linux C\C++环境下判断某个文件是否存在,可以使用access函数:
#include <unistd.h>
#include <stdio.h>
int main()
{
const char* file1 = "access.cpp";
const char* file2 = "access1.cpp";
printf("%s:%d\n", file1, access(file1, F_OK));
printf("%s:%d\n", file2, access(file2, F_OK));
return 0;
}
假设文件access.cpp且access1.cpp不存在,那么结果为:
access.cpp:0
access1.cpp:-1 ......
Linux进程怎样才能获取属于它自己的线性地址空间呢,比如 0x08048000到0x0804c000这段线性地址空间被分配给了一个进程,进程就可以访问这段地址空间,线性地址空间的开始和结束都必须以4KB对齐
这里有以下几种情况:
1.刚刚创建的新进程;
2.使用exec系统调用装载一个新的程序运行;
3.将一个文件(或部)映射到进程地址空间中去;
4.当用户堆栈不够的时候,扩展堆栈对应的线性区; ......
注意该方法是计算的自开机以来的使用率,是一个全局的,没多大意义,每一次计算CPU利用率 = 100 *(user + nice + system)/(user + nice + system + idle) 这里要减去一定时间以前方可计算出这一段时间内的cpu使用率。 "proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通 过proc得到系统的信息,并可以改变内核的某些参数。" 这里将介绍如何从/proc文件系统中获取与防火墙相关的一些性能参数,以及如何通过/proc文件系统修改内核的相关配置。 1、从/proc文件系统获取相关的性能参数 cpu使用率: /proc/stat 内存使用情况: /proc/meminfo 网络负载信息: /proc/net/dev 相应的计算方法:(摘自:什么是 proc文件系统,见参考资料) (1) 处理器使用率 (2) 内存使用率 (3) 流入流出数据包 (4) 整体网络负载 这些数据分别要从/proc/stat、/proc/net/dev、/proc/meminfo三个文件中提取。如里有问题或对要提取的数据不太清楚, 可以使用man proc来查看proc文件系统的联机手册。 (1) 处理器使用率 这里要从/proc/stat中提取四个数据:用户模式(user)、低优先级的用户模式 ......
1.文件的创建和读写
当我们需要打开一个文件进行读写操作的时候,我们可以使用系统调用函数open.使用完成以后我们调用另外一个close函数进行关闭操作.
int open(const char *pathname,int flags);
int open(const char *pathname,int flags,mode_t mode);
int close(int fd);
open函数有两个形式.其中pathname是我们要打开的文件名(包含路径名称,缺省是认为在当前路径下面).flags可以去下面的一个值或者是几个值的组合.
O_RDONLY :以只读的方式打开文件.
O_WRONLY :以只写的方式打开文件.
O_RDWR :以读写的方式打开文件.
O_APPEND :以追加的方式打开文件.
O_CREAT :创建一个文件.
O_EXEC :如果使用了O_CREAT而且文件已经存在,就会发生一个错误.
O_NOBLOCK :以非阻塞的方式打开一个文件.
O_TRUNC :如果文件已经存在,则删除文件的内容.
前面三个标志只能使用任意的一个.如果使用了O_CREATE标志,那么我们要使用open的第二种形式。还要指定mode标志,用来表示文件的访问权限。mode可以是以下情况的组合. ......