Linux编程补充知识

在Linux编程的过程中,发现的问题。

做一下《Linux高性能服务器编程(游双)》这本书的索引,以后方便查。


ssh

1
ssh: secure shell

touch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
touch命令
不带参数:如果不存在这个文件,则创建;存在的话,把atime和ctime时间改为当前时间

参数
-a 只修改atime
-c 如果不存在,不创建
-d 修改mtime和ctime
-m 只修改mtime
-r 使用另一个文件的时间
-t 指定时间

linux文件时间戳
atime:访问时间
mtime:文件内容修改时间
ctime:文件属性或内容修改时间

ldd

1
2
ldd本身不是一个程序,而仅是一个shell脚本:ldd可以列出一个程序所需要得动态链接库(so)
ldd app

export

1
2
3
4
Linux export 命令用于设置或显示环境变量。

在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。
export LD_LABRARY_PATH=

linux环境变量

1
2
3
4
5
6
7
8
9
10
11
环境变量配置文件

对所有用户都起作用
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc

对当前用户起作用
配置文件在用户家目录下,即用户的主目录下。
~/.bash_profile
~/.bashrc

启动过程

配置方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
读取环境变量
显示所有:export
显示当前PATH:echo $PATH

方法一:使用export命令
export PATH=$PATH:/home/....
生效时间:立即生效,当前终端有效,当前用户有效

方法二:用户目录下的.bashrc文件或.bash_profile文件
vim ~/.bashrc
最后一行加入export PATH=$PATH:/home/....
生效时间:新终端或者手动输入source ~/.bashrc生效,永久有效,仅对当前用户有效

方法三:修改系统配置,需要管理员权限
vim /etc/bashrc
或者vim /etc/profile
生效时间:新终端或者手动输入source /etc/bashrc生效,永久有效,所有用户有效


用户级别环境变量定义文件:
~/.bashrc、~/.profile(部分系统为:~/.bash_profile)
系统级别环境变量定义文件:
/etc/bashrc、/etc/profile(部分系统为:/etc/bash_profile)、/etc/environment

source

1
2
3
4
source命令作用
在当前bash环境下读取并执行FileName中的命令。
source FileName
. FileName

\n

1
换行会刷新缓冲区.

编译pthead库函数

1
2
gcc create.c -o app -l pthread
gcc create.c -o app pthread

多线程编程的退出问题

1
2
3
4
5
6
注册线程需要时间,如果在这个时间内主函数return或者exit结束的话,即进程结束,子线程不会执行。
但是可以通过在return或者exit之前,使用pthread_exit函数让主线程正常退出,这样不会影响子线程。
int num = 0;
pthread_create(&tid, NULL, callback, (void*)&num);
num++;
在子线程中,输出的是1,因为共享变量num,主线程的num++语句虽然在创建线程的后面,但是先执行了。
1
子线程也有自己的栈空间,所以不要返回局部变量。
1
端口复用,程序退出了,但是端口还没有释放,所以需要端口复用。

阻塞、非阻塞、同步、异步

项目实战基础知识

《Linux高性能服务器编程》游双。