coreutils8.32 users命令和源码分析 执行顺序:判断是否有指定utmp文件,没的话就使用默认的/var/run/utmp,然后使用read_utmp读取utmp文件,然后在遍历读取到的用户名。通过utmp(/var/run/utmp)获取当前登陆用户,utmp不存在就使用wtmp(/var/log/wtmp)用户操作记录文件来获取。核心函数:read_utmp定义在utmp.h 读取utmp文件。如果多次同一用户名,就是这个用户同时存在多个会话。命令功能:显示当前所有的登陆用户。users的操作数是指定文件获取。
coreutils8.32 tty命令和源码分析 使用了-s选项会检查STDIN_FILENO是否存在,存在就返回EXIT_SUCCESS不输出任何消息,只打印状态掩码的退出。不存在就返回TTY_STDIN_NOTTY退出。由文件描述符查出对应的文件名(在这里传入STDIN_FILENO用来获取当前进程的tty)核心函数: isatty函数检查给定的设备类型(在这里用于检查标准输入是否存在)tty -s 可以于检查标准输入是否存在。命令功能:默认输出tty名称。
coreutils8.32 nproc命令和源码分析 * 执行流程:默认将用于获取进程可用cpu数的常量(NPROC_CURRENT_OVERRIDABLE)赋值到mode。(如果开启了--all就将mode切换成查询cpu总数(NPROC_ALL))。如果开启了--ignore就调用xdectoumax减少进程可用cpu总数,然后刚好后面获取cpu数量的函数(就会获取到ignore减少后的进程可用cpu) */命令功能:默认查询进程可用的cpu数,--all查询cpu总数,--ignore xxx是减少x个进程可用cpu数。
coreutils8.32 whoami命令和源码分析 执行流程:先用geteuid获取调用进程的用户uid,再用getpwuid通过uid获取完整的passwd结构再输出用户名。命令功能:显示当前操作用户(不是登陆用户,和logname不一样。登陆用户之后可以su切换操作用户)
apue 4.22 递归目录 #include "apue.h"#include <dirent.h>#include <limits.h>/* 为每个文件名调用的函数类型 */typedef int Myfunc(const char *, const struct stat *, int);static Myfunc myfunc;static int myftw(char *, Myfunc *);static int do.
unix网络编程源码编译 cd unpv13e./configurecd libmake得到的静态文件libunp.a在上一层目录。$ nm -g libunp.a查看符号表 (主要是想看一下这个库的各个源文件调用了哪些Linux系统调用)cd libfreevim inet_ntop.c // 第61行 size_t size ->改成 socklen_t size)makecd ../libgaimakecd ../cp libunp.a...
linux自定义系统变量 vim /etc/profileexport后添加export PATH=$PATH:/usr/local/nginx/sbin添加保存后,刷新profile文件source /etc/profileps:重启后出现用户切换情况sudo -i重新切换root就行了
linux查看进程绝对路径 ps -ef | grep nginx记录进程pidcd /procls找到和pid对应名称的目录cd "pidNumber"ls -lexe和cwd链接符是绝对路径lrwxrwxrwx 1 root root 0 Jul 28 01:15 exe -> /usr/local/nginx/sbin/nginx