ITKeyword,专注技术干货聚合推荐

注册 | 登录

Linux学习阶段性总结

fansongy 分享于 2011-09-10

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

一、linux基础

最近学linux下的C编程,就又从新装了Fedora。学过就是好捡,在总结一下熟悉的知识点吧,看看有没有不会的。 1、linux系统相关知识:linux是个开源的系统,有不同的版本,安装在\ 目录下,存储格式为ext3。 2、文件管理命令:进入、退出、建立、删除、查看、更改文件 3、VI编辑器:yy复制、p粘贴、:wq退出、a后移一位输入、i当前位输入 4、基本指令:

linux 指令熟悉 who 察看有谁登陆,以及控制终端号。 tar -cvf a.tar.gz photoes

将photoes 打包为a.tar.gz

tar -xvf

a.tar.gz

把文件解压到当前目录下 sync 数据同步写入磁盘。 chattr +i a 赋予a隐藏属性,使a不可删除与更改。去掉的方法 chattr -i a。lsattr显示文件的隐藏属性。 top 动态显示变化的进程。

5、用户和权限管理:

Linux 添加用户 ,帐号管理 ,群组管理 详解 所有用户的ID都存放在/etc/passwd 中 例如

fsy:x:500:500:Fedora:/home/fsy:/bin/bash

信息内容依次为:用户名、密码(一个形式)、UID(UID为0时为root权限)、GID、用户信息说明栏、家目录、Shell。用户登陆的过程是这样的:首先在/etc/passwd中寻找是否有相应的帐号,如果没有则跳出,如果有的话则将该账号对应的UID 与GID 读出来,另外,该账号的家目录与shell 设定也一并读出。然后核对在/etc/shadow对应帐号的密码。最终进入shall。shadow的文件内容是这样: fsy:$1$giEMo6.Y$rY2i/S7K2UXHTvxJ.VuEL.:15201:0:99999:7:::

其中前两项为帐户名和密码。 useradd 添加用户、passwd更改密码、userdel 删除用户、usermod更改用户。 6、SHELL编程:具体参考 shell编程1 shell编程2 unset name 取消变量的定义 $?:命令执行后返回的状态(0为正确执行;非0为出错) 可用于检查上一个命令执行是否正确 $$:当前进程的进程号 $#:位置参数的数量,$1表示第一个自变量 $0:当前执行的进程名 $1-$9:脚本参数 $*:所有位置参数的内容

shell中的引号: 1、单引号(‘):单引号括起来的字符(包括特殊字符)都作为普通字符。 2、双引号:由双引号括起来的字符,除$、\、’、和”这几个字符仍是特殊字符并保留其特殊功能,其余字符仍作为普通字符对待。

[注]:

$:用其后指定的变量值来代替这个变量

\:转义字符,其后面的字符为普通字符。通常需要加\的只有4个字符, $、\、’、和”。

对于”号,如果没加\,则与前一个“号匹配 3、反引号(`):

与键盘上的~同一个键上的符号。反引号括起来的字符串被shell解释为命令行,执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号部分。 二、C

语 言 1、

sizeof用法和分析

sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。其返回值类型为size_t,在头文件stddef.h中定义。在32位系统中:

char的sizeof值为1,char是我们编程能用的最小数据类型。

short的sizeof值为2;

int、float、long为4;

double为8;

所有的指针的sizeof值都为4。

char* ss = "0123456789"; sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针 sizeof(*ss) 结果 1 ===》*ss是第一个字符 char ss[] = "0123456789"; sizeof(ss) 结果 11 ===》ss是数组,计算到\0位置,因此是10+1 sizeof(*ss) 结果 1 ===》*ss是第一个字符 char ss[100] = "0123456789"; sizeof(ss) 结果是100 ===》ss表示在内存中的大小 100×1 strlen(ss) 结果是10 ===》strlen是个函数内部实现是用一个循环计算到\0为止之前 int ss[100] = "0123456789"; sizeof(ss) 结果 400 ===》ss表示再内存中的大小 100×4 strlen(ss) 错误 ===》strlen的参数只能是char* 且必须是以''\0''结尾的 char q[]="abc"; char p[]="a\n"; sizeof(q),sizeof(p),strlen(q),strlen(p); 结果是 4 3 3 2

2、笔试题strcpy写法

char * strcpy(char * strDest,const char * strSrc)

{

if ((strDest==NULL)||(strSrc==NULL))

throw "Invalid argument(s)";

char * strDestCopy=strDest;

while ((*strDest++=*strSrc++)!='\0');

return strDestCopy;

} 3、 C语言基础知识

+++的问题。

int i =1;

int j =2;

int k = i+++j;

printf("%d" ,k);

输出k为3。

编译原理有关编译器在词法解析的时候,对于运算符,总是查找最大的匹配也就是说,i+++j,编译器在找到+的时候,它不立即理解为+而是继续下一个字符,下一个字符仍然是+,可以组成++, 再往下的话便是+++,不成立了。所以i+++j会解析为(i++)+j 。另外i++是后自增,所以k=1+2=3,i再自增。++是所有的都算完了,再增加。 4、类型转换

unsigned int a =6;

int b=-20;

char c;

(a+b>6)?(c=1):(c=0);

printf("%d" ,c);

unsigned int 类型的数据与 int 类型的数据相运算后,自动转化为unsigned int类型。因此 a+b的值不是-14,而是一个unsingned int 类型的数424967382。因此返回值为1。

5、a和b比较大小,不许用if、?:、switch 。

int max=(a + b + abs ( a-b ) ) /2

a和b交换:

方案1:

a=a+b

b=a-b

a=a-b

方案2:

a=a^b

b=a^b

a=a^b

三、linux系统编程 1、gcc、gdb、makefile 学习和用法 2、通过patch实现生成使用补丁 3、系统调用的方式访问文件

一、linux基础   最近学linux下的C编程,就又从新装了Fedora。学过就是好捡,在总结一下熟悉的知识点吧,看看有没有不会的。 1、linux系统相关知识:linux是个开源的系统,有不同的版本,安装在

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。