
Linux
Freiheit_ZZ
隔行隔座山,我想翻山越岭,看不一样的风景。
展开
-
UID、EUID、GID、EGID、PGID
UID:创建进程的用户信息EUID:创建进程的用户对进程所属可执行文件的操作权限信息,还包括是否有使用kill系统调用发送软中断信息到Linux内核结束进程的权限GID:创建进程的用户所属群组的信息EGID:用于标识进程目前所属用户组。和GID不同,因为进程执行时所属用户组可能改变PGID:用于标识进程组信息gid_t getgid(void); 获取运行进程的GID gid_t getegid(void); 获取运行进程的EGID pid_t getpi...原创 2021-07-21 15:41:43 · 1743 阅读 · 0 评论 -
函数fork与vfork的区别与联系详解
创建一个新进程的方法只有由某个已存在的进程调用fork()或vfork(),当然某些进程如init等是作为系统启动的一部风而被内核创建的。1.fork函数介绍#include <sys/types.h>#include <unistd.h>pid_t fork (void );正确返回:父进程中返回子进程的进程号;子进程中返回0;(单调用双返回函数)错误返回:-1;子进程是父进程的一个拷贝。具体说,子进程从父进程那得到了数据段和堆栈段,但不是与父进程共享而是单独分转载 2021-07-21 11:43:51 · 398 阅读 · 0 评论 -
gcc编译#include <pthread.h> 失败问题
gcc编译带pthread.h头文件的源码时需要的参数原创 2021-06-18 17:26:00 · 3294 阅读 · 0 评论 -
管道原理,C语言实现
#include <unistd.h>int fd[2];void run_ls(void){ char *argv[]={"ls", "-l", NULL}; //传递给执行文件的参数数组,这里包含执行文件的参数 char *envp[]={0, NULL}; //传递给执行文件新的环境变量数组 dup2(fd[1], 1); close(fd[0]); close(fd[1]); execve("/bin/ls", argv, en...原创 2021-06-18 15:20:55 · 273 阅读 · 0 评论 -
Linux下,信号用法
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>void sighandler(int);int main(){ signal(SIGINT, sighandler); printf("HelloWorld!\n"); while(1) { printf("running...\n"); sleep(1); }...原创 2021-06-18 14:01:24 · 111 阅读 · 0 评论 -
getopt使用方法
头文件#include <unistd.h>函数声明int getopt(int argc, char * const argv[], const char *optstring);参数argc —— 提供给主函数的参数个数argv —— 参数的字符串数组的指针optstring —— 由三部分组成,第一部分是可选的字符’+‘或’-’,第二部分是一个可选的字符’:’,第三部分是具体的选项字符串。1. 单个字符:表示选项后不带参数。2. 单个字符后接一个冒号:..原创 2021-05-27 16:37:17 · 854 阅读 · 0 评论 -
shell编程test命令用法
①判断表达式(and, or)test表达式1 -a表达式2(两个表达式都为真)test表达式1 -a表达式2(两个表达式有一个为真) ②判断字符串test -n 字符串 字符串的长度非零test -z 字符串 字符串长度为零test == 字符串 字符串相等test != 字符串 字符串不相等例如:a = “abc”te原创 2017-05-21 11:23:20 · 621 阅读 · 0 评论 -
Linux目录结构
/bin: 该目录中存放Linux的常用命令。/boot: 该目录下存放的都是系统启动时要用到的程序,当用lilo引导Linux时,会用到这里的一些信息。/dev: 该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,可以访问这些外部设备,与访问一个文件或一个目录没有区别。/etc: 该目录存放了系统管理时要用到的各种配置文件和子目录,如网络配置文件、文件原创 2017-05-20 19:28:27 · 285 阅读 · 0 评论 -
exec函数族 整理笔记
以ls -l为例#include >extern char **environ;int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ...);int execl(const char *path, const char *arg, ..., ch原创 2017-05-19 16:29:49 · 257 阅读 · 0 评论