目录
一,文件操作
1.stat函数
#include <sys/stat.h>
int stat(const char *path, struct stat *buf);
2.access函数
#include <unistd.h>
int access(const char *pathname, int mode);
3.chmod函数
#include <sys/stat.h>
int chmod(const char *path, mode_t mode);
4.truncate函数
#include <sys/stat.h>
int truncate(const char *path, off_t length);
【案例1】使用stat函数获取文件属性,并输出文件的大小。
输出内容如下:
二,进程管理
1.创建进程
#include <unistd.h>
pid_t fork(void);
【案例 1】使用fork函数创建一个进程,创建成功后父子进程分别执行不同的功能。
执行结果如下:
多次执行test_fork会发现,child process后输出的ppid不等于parent process的pid,而等于1。出现这种情况,是因为父进程先于子进程终止,子进程变成“孤儿进程”,后面由init进程来接收。init的pid=1.
2.创建多个进程
对上面的案例进行修改,进行简单的循环即可:
int i;
for(i = 0; i < 2; i ++){
tempPid = fork();
}//of for i
【案例 2】
在Linux系统中,子进程应由父进程回收,但是当子进程被创建后,它与它的父进程及其它进程共同竞争系统资源,所以父子进程执行的顺序是不确定的,终止的先后顺序也是不确定的。
Shell命令提示符也是1个进程,它需要和新建进程一起竞争CPU。
3.进程的执行顺序:利用sleep函数,暂缓进程执行
【案例 3】
结果如下
总结:
进程本身被创建后运行次序是完全随机无序的。