1.友元函数。友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。友元函数说明在类体内,使用关键字friend。
2. 程序 输出结果: 6 5 4 4
void
Func(
char
str_arg[
100
])
{
printf(
"%d\n"
, sizeof(str_arg));
}
int
main(
void
)
{
char
str[] =
"Hello"
;
printf(
"%d\n"
, sizeof(str));
printf(
"%d\n"
, strlen(str));
char
*p = str;
printf(
"%d\n"
, sizeof(p));
Func(str);
}
解析:
sizeof和strlen()都可以用来统计字符串所占用的大小,二者的区别为:
1)sizeof是运算符,而strlen是函数;
2)strlen必须以char *作为参数,且必须以'\0'结尾;而sizeof()可以用于其他类型;
3)strlen统计字符串中字符的长度,不包括结尾的'\0';
4)数组做sizeof的参数不退化,而传递给strlen就变为指针
sizeof(str):占用的字节为5 + 1 = 6,其中1为末尾的'\0';
strlen(str):5
sizeof(p):计算的是指针的长度,32位机器上为4B
Func(str):传递的是指针,大小为4
sizeof和strlen()都可以用来统计字符串所占用的大小,二者的区别为:
1)sizeof是运算符,而strlen是函数;
2)strlen必须以char *作为参数,且必须以'\0'结尾;而sizeof()可以用于其他类型;
3)strlen统计字符串中字符的长度,不包括结尾的'\0';
4)数组做sizeof的参数不退化,而传递给strlen就变为指针
sizeof(str):占用的字节为5 + 1 = 6,其中1为末尾的'\0';
strlen(str):5
sizeof(p):计算的是指针的长度,32位机器上为4B
Func(str):传递的是指针,大小为4
3. 孤儿进程和僵尸进程
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。
如果进程不调用wait / waitpid的话, 那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程. 此即为僵尸进程的危害,应当避免。
孤儿进程是没有父进程的进程,孤儿进程这个重任就落到了init进程身上 ,init进程就好像是一个民政局,专门负责处理孤儿进程的善后工作。每当出现一个孤儿进程的时候,内核就把孤 儿进程的父进程设置为init,而init进程会循环地wait()它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init进程就会代表党和政府出面处理它的一切善后工作。 因此孤儿进程并不会有什么危害。
4.浮点数表示:
5.
S
为死锁的充分条件是当且仅当
S
状态的资源分配图是不可完全简化的。该充分条件称为
死锁
定理。
6.
第一列的字符可以分为三组,每一组有三个,每个字符都代表不同的权限,分别为读取(r)、写入(w)和执行(x):
-rwxr-xr-- 1 amrood users 1024 Nov 2 00:10 myfile drwxr-xr--- 1 amrood users 1024 Nov 2 00:10 mydir第一列就包含了文件或目录的权限。
第一列的字符可以分为三组,每一组有三个,每个字符都代表不同的权限,分别为读取(r)、写入(w)和执行(x):
- 第一组字符(2-4)表示文件所有者的权限,-rwxr-xr-- 表示所有者拥有读取(r)、写入(w)和执行(x)的权限。
- 第二组字符(5-7)表示文件所属用户组的权限,-rwxr-xr-- 表示该组拥有读取(r)和执行(x)的权限,但没有写入权限。
- 第三组字符(8-10)表示所有其他用户的权限,rwxr-xr-- 表示其他用户只能读取(r)文件。
- + 增加文件或者目录的权限
- -删除文件或目录的权限
- =设置指定的权限
- u stands for user.
- g stands for group.
- o stands for others.
- a stands for all.
c chmod a+x , g+w aaa