Articles of unix

包含Linux GCC链接器

我不明白GCC如何在Linux下工作。 在源文件中,当我做一个: #include <math.h> 编译器是否提取了相应的二进制代码并将其插入到编译的可执行文件中?编译器是否插入了对外部二进制文件(a-la Windows DLL?)的引用? 我猜这个问题的一个通用版本是:是否有一个等效的概念,以* nix下的Windows DLL?

$ PATH优于别名

我对Linux和Unix比较陌生。 在互联网的帮助下,我终于弄清楚我的.bashrc $PATH和别名是如何工作的。 但我真的找不到任何描述什么时候使用哪个。 假设我在Library / Frameworks中安装了Python3.3,可执行文件是/Library/Frameworks/Python.framework/Versions/3.3/bin/python3 ,但是我想通过在terminal中inputpython3来执行python 3.3。 当我理解正确时,至less有三种方法可以实现这一点: 1)我在我的.bashrc中修改$ PATH: export PATH=/Library/Frameworks/Python.framework/Versions/3.3/bin:${PATH} 2)我在我的.bashrc中设置了一个别名: alias python3=/Library/Frameworks/Python.framework/Versions/3.3/bin 3)创build一个符号链接(符号链接): ln -s /Library/Frameworks/Python.framework/Versions/3.3/bin /usr/local/bin 你会怎么说(从你的经验)是“推荐”的方式?

fork()中的copy-on-write工作如何?

我想知道在fork()中如何写入copy。 假设我们有一个具有dynamicint数组的进程A: int *array = malloc(1000000*sizeof(int)); 数组中的元素被初始化为一些有意义的值。 然后,我们使用fork()来创build一个subprocess,即B. B将迭代数组并进行一些计算: for(a in array){ a = a+1; } 我知道B不会立即复制整个数组,但是什么时候子B为数组分配内存? 在fork()? 它是一次分配整个数组,还是只分配一个整数a = a+1 ? a = a+1; 这是怎么发生的? B是否从A读取数据并将新数据写入自己的数组? 我写了一些代码来探索COW如何工作。 我的环境:Ubuntu 14.04,gcc4.8.2 #include <stdlib.h> #include <stdio.h> #include <sys/sysinfo.h> void printMemStat(){ struct sysinfo si; sysinfo(&si); printf("===\n"); printf("Total: %llu\n", si.totalram); printf("Free: %llu\n", si.freeram); } int main(){ long len = […]

核心转储本身是可执行的吗?

核心转储维基百科页面说 在类Unix系统中,核心转储通常使用标准的可执行映像格式: a.out in older versions of Unix, ELF in modern Linux, System V, Solaris, and BSD systems, Mach-O in OS X, etc. 这是否意味着核心转储本身是可执行的? 如果没有,为什么不呢? 编辑:由于@ WumpusQ.Wumbley在评论中提到了coredump_filter ,可能上面的问题应该是: 可以生成一个核心转储,使其可以自行执行?

符号链接 – 性能打击?

出于部署的原因,使用符号链接稍微容易一些,但是这些将用于我所有网站的核心文件和configuration,每天可以访问数千次。 我是否更明智地将文档移动到服务器上的正确位置(稍微更有问题的部署),而不是对所有内容使用符号链接(轻微的性能下降?)

ctime总是<= mtime?

在Python中使用os.stat()时,我可以假设st_ctime总是小于或等于st_mtime吗? 如果没有,为什么不呢? 该代码将始终在Linux上运行,但是如果在操作系统之间存在差异,那么很好理解。

unix中nice和setpriority的区别

我试图在C中实现unix的“nice”命令的不同风格。我已经看到了nice()系统调用和setpriority()调用的定义。 nice()调用只增加/减less进程的优先级。 如果我想将进程的优先级设置为特定的值,我不能使用nice()调用吗? 基本上,除了如何修改优先级,nice()和setpriority()之间有什么区别?

在C / C ++中创build一个unix / linux命令行工具的最佳做法是什么?

我目前负责为内部开发团队创build一些命令行帮助工具。 但是,我想知道创buildunix命令行工具的最佳实践。 我已经尝试查看git源代码 ,以了解如何读取参数并相应地显示消息的示例。 然而,我正在寻找一个清晰的模板来创build一个工具,安全地读取参数,并显示标准的“帮助”消息,如果用户键入一个不正确的参数或帮助我想显示帮助信息。 是否有一个标准的库阅读-abcFGH和 – –parameter和切换哪个进程基于传递的参数启动? 命令行: git 要么 git –help 输出: usage: git [–version] [–exec-path[=<path>]] [–html-path] [–man-path] [–info-path] [-p|–paginate|–no-pager] [–no-replace-objects] [–bare] [–git-dir=<path>] [–work-tree=<path>] [–namespace=<name>] [-c name=value] [–help] <command> [<args>] … 命令行: MyTool CommandName –CommandArgs 输出: 无论具体的命令如何 我到目前为止工作的是: 码: int main(int argc, char **argv) { if(argc < 2) helpMessage(); char* commandParameter = argv[1]; […]

linux和unix命令有什么区别?

我是一个新手在linux / unix世界…. Linux命令类似unix命令? 也许你可以回答另外一个问题:我可以使用ubuntu在Unix中练习命令吗? 谢谢!

grep命令在每次匹配后添加结束行

你有什么想法如何添加一些结束线 "==========================================================================================" 每场比赛之后 tail -f error.log -n 2000 | grep -B 10 -A 25 'Exception:' 这个命令打印所有exception日志,但我喜欢看到每个exception日志一个分隔线。