随笔分类 - linux C编程实战
书籍学习
setuid和setgid
摘要:关于有效用户,实际用户的问题,参考: http://www.cnblogs.com/kunhu/p/3699883.html 内核对进程存取文件的许可检查,是通过考查进程的有效用户ID来实现的的。 在使用setuid的时候要注意,如果代码存在缓冲区溢出漏洞,且该程序是一个网络程序, 可能会被黑客攻击
阅读全文
等待进程结束wait,waitpid
摘要:当子进程先于父进程退出时,如果父进程没有调用wait和waitpid函数,子进程就会进入僵死状态。 pid_t wait(int *status); pid_t waitpid(pid_t pid, int *status, int options); The wait() system call
阅读全文
执行新程序以及环境变量
摘要:关键字:子进程,exec,环境变量 使用fork或vfork创建子进程后,子进程通常会调用exec函数来执行另外一个程序。系统调用exec用于执行一个可执行程序以 替代当前进程的执行映像。 注意:exec调用并没有创建新的进程。一个进程一旦调用exec函数,它本身就“死亡”了,系统把代码段替换成新的
阅读全文
进程退出exit、_exit、abort
摘要:分为正常退出,异常退出 正常退出的方法: 1、在main函数中执行return 2、调用exit函数 3、调用_exit 函数 异常退出的方法: 1、调用abort函数 2、进程收到某个信号,而该信号使进程终止 不管是哪种退出方式,最终都会执行内核中的同一段代码。这段代码用来关闭进程所有已打开的文件
阅读全文
守护进程的创建(syslog函数)
摘要:守护进程(daemon)是指在后台运行的,没有控制终端与之相连的进程。它独立于控制终端,通常周期性的执行某种任务。 守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程的方式实现的,如Internet服务器进程inetd,Web服务器进程http等。守护进程在后台 运行,类似于wind
阅读全文
进程控制fork vfork,父子进程,vfork保证子进程先运行
摘要:主要函数: fork 用于创建一个新进程 exit 用于终止进程 exec 用于执行一个程序 wait 将父进程挂起,等待子进程结束 getpid 获取当前进程的进程ID nice 改变进程的优先级 孤儿进程: 如果一个子进程的父进程先于子进程结束,子进程就成为一个孤儿进程,他由init进程收养,成
阅读全文
进程概述,父子进程
摘要:可以通过ps pstree参看当前系统在执行的进程 获取进程标识的函数: 1、获取进程ID pid_t getpid(void); 2、获取进程父进程的ID pid_t getppid(void); 3、获得进程的实际用户ID uid_t getuid(void); 4、获得进程的有效用户ID ui
阅读全文
实现自己的ls命令
摘要:一步步实现,先看最简单的ls的指令: ls不带参数,直接打印文件名 dst.txt main10.c main11.c main12.c main13.c main14.c~ main15.c~ main1.c main2.c main3.c main4.c main5.c main6.c main
阅读全文
获取当前目录getcwd,设置工作目录chdir,获取目录信息
摘要:设置工作目录: #include <unistd.h> int chdir(const char *path); int fchdir(int fd); chdir() changes the current working directory of the calling process to t
阅读全文
目录的创建,删除,获取当前目录
摘要:#include <sys/stat.h> #include <sys/types.h> int mkdir(const char *pathname, mode_t mode); 创建一个新的空目录,空目录中会自动创建 . 和.. 目录 所创建的目录的存取权限由 mode&~umask 指定 #i
阅读全文
文件的移动,删除 rename remove unlink 函数
摘要:int rename(const char *oldpath, const char *newpath); rename() renames a file, moving it between directories if required. 利用rename实现简单的mv指令 文件的删除可以使用u
阅读全文
umask函数
摘要:#include <sys/types.h> #include <sys/stat.h> mode_t umask(mode_t mask); 在进程创建一个新的文件或目录时,如调用open函数创建一个新文件,新文件的实际存取权限是mode与umask按照 mode&~umask运算以后的结果。um
阅读全文
utime修改文件的存取,修改时间
摘要:#include <sys/types.h> #include <utime.h> int utime(const char *filename, const struct utimbuf *times); #include <sys/time.h> int utimes(const char *f
阅读全文
Linux C ftruncate 函数清空文件注意事项(要使用 lseek 重置偏移量)
摘要:转载:http://blog.csdn.net/a_ran/article/details/43562429 int truncate(const char *path, off_t length); int ftruncate(int fd, off_t length); 将文件大小改变为参数le
阅读全文
如何实现多进程写一个文件
摘要:转载:http://www.eefocus.com/ayayayaya/blog/10-07/193194_0d80b.html 在我们学习IO的时候,曾经利用文件IO函数,标准IO函数都实现了对文件的拷贝,那么在我们学习过进程间通信后,就可以创建多个进程来完成对同一个文件的读写。例如让父进程写文件
阅读全文
Linux fcntl函数设置阻塞与非阻塞
摘要:转自http://www.cnblogs.com/xuyh/p/3273082.html 用命令F_GETFL和F_SETFL设置文件标志,比如阻塞与非阻塞 F_SETFL 设置给arg描述符状态标志,可以更改的几个标志是:O_APPEND, O_NONBLOCK,O_SYNC和O_ASYNC。 命
阅读全文
close_on_exec标志位的作用
摘要:转自:http://blog.csdn.net/sunlylorn/article/details/6363727 close_on_exec 是一个进程所有文件描述符(文件句柄)的位图标志,每个比特位代表一个打开的文件描述符,用于确定在调用系统调用execve()时需要关闭的文件句柄(参见incl
阅读全文
文件属性,获取,设置文件属性chown stat函数
摘要:转载:http://c.biancheng.net/cpp/html/326.html man 2 stat查看手册 int stat(const char *path, struct stat *buf); int fstat(int fd, struct stat *buf); int lsta
阅读全文
fcntl函数
摘要:转载:http://blog.csdn.net/pbymw8iwm/article/details/7974789 查找系统头文件的路径 locate types.h |grep "sys" 在man fcntl 的手册中可以看到结构体 struct flock fcntl函数可以对已打开的文件描述
阅读全文
管道与popen函数与重定向
摘要:转自:http://www.tldp.org/LDP/lpg/node12.html Pipes the Easy Way!
阅读全文
浙公网安备 33010602011771号