在Unix中,每当我们想要创建一个新进程时,我们会fork当前进程,创建一个与父进程完全相同的新子进程;然后我们执行 exec 系统调用以将来自父进程的所有数据替换为新进程的所有数据。
为什么我们首先创建父进程的副本而不是直接创建新进程?
假设我A在文本编辑器中按下键,这会a
在文档中插入字符并将其显示在屏幕上。我知道编辑器应用程序没有直接与硬件通信(中间有内核和其他东西),那么我的计算机内部发生了什么?
请注意,我不问如何。我已经知道像pv
和这样的选项rsync -P
。
我想问一下为什么不cp
实现进度条,至少作为标志?
一个非常简单的小程序的可执行文件,比如下面显示的,在一种 Linux 上编译的,它会在不同的 Linux 上运行吗?还是需要重新编译?
在这种情况下,机器架构重要吗?
int main()
{
return (99);
}
Run Code Online (Sandbox Code Playgroud) 来自帖子为什么 rm 可以删除只读文件?我明白那个rm
只需要对目录的写权限即可删除文件。但是我发现很难消化我们可以轻松删除所有者和分组不同的文件的行为。
我尝试了以下
mtk : 我的用户名
abc : 创建了一个新用户
$ ls -l file
-rw-rw-r-- 1 mtk mtk 0 Aug 31 15:40 file
$ sudo chown abc file
$ sudo chgrp abc file
$ ls -l file
-rw-rw-r-- 1 abc abc 0 Aug 31 15:40 file
$ rm file
$ ls -l file
<deleted>
Run Code Online (Sandbox Code Playgroud)
我在想这不应该被允许。用户应该只能删除其所有权下的文件吗?有人可以解释为什么允许这样做吗?避免这种情况的方法是什么?我可以认为只限制父目录的写权限以禁止意外删除文件。
为什么在 Unix 文件系统设计中存在open()
并close()
存在?
操作系统不能只检测第一次read()
或被write()
调用并做open()
通常会做的事情吗?
我正在尝试编写一个脚本,该脚本将根据机器的架构确定操作。我已经uname -m
习惯收集架构线了,但是我不知道有多少个ARM架构,也不知道一个是armhf
, armel
, 还是arm64
.
由于这是需要这种脚本来确定脚本的部分是否可以运行或不,我试图找到一个简单的方法来确定该架构armhf
,armel
或arm64
。是否有可用于输出或者任何单行或简单的命令armhf
,armel
或arm64
?
该脚本是专门为 Debian 和 Ubuntu 系统编写的,我正在考虑这一点(如果您不在这些发行版之一上,它会自动退出,但是如果命令存在)
编辑:最近了解到 armel 已死,并且 arm64 软件构建器(PPA 或基于虚拟的)并不是最稳定的。所以我有一个通配符搜索查找arm*
和假设 armhf,但仍然有必要找出一个返回三个之一的一个 liner - 无论是 Ubuntu/Debian 命令还是内核调用或其他东西。
我不确定我是否理解硬件和软件中断的概念。
如果我理解正确,硬件中断的目的是引起 CPU 的一些注意,这是实现 CPU 多任务处理的一部分。
另一方面,我认为软件中断的目的是让当前在 CPU 上运行的进程请求一些资源。
前言:我喜欢 bash 并且无意开始任何形式的争论或圣战,希望这不是一个非常幼稚的问题。
这个问题与超级用户上的这篇文章有些相关,但我认为 OP 并不真正知道他在问什么。我在 FreeBSD、linux、OS X 和 Windows 上的 cygwin 上使用 bash。我最近在 Windows 上使用 PowerShell 也有丰富的经验。
是否有用于 *nix 的 shell,已经可用或正在开发中,它与 bash 兼容,但在混合中添加了一层面向对象的脚本?我所知道的唯一接近的是 python 控制台,但据我所知,它不提供对标准 shell 环境的访问。例如,我不能只是cd ~
and ls
,然后chmod +x file
在 python 控制台中。我将不得不使用 python 来执行这些任务,而不是标准的 unix 二进制文件,或者使用 python 代码调用二进制文件。
这样的壳存在吗?
我知道“一切都是文件”意味着即使设备在 Unix 和类 Unix 系统中也有它们的文件名和路径,并且这允许在各种资源上使用通用工具,而不管它们的性质如何。但我无法将其与 Windows 进行对比,这是我使用过的唯一其他操作系统。我读过一些关于这个概念的文章,但我认为对于非开发人员来说,它们有些难以掌握。外行的解释是人们需要的!
例如,当我想将文件复制到连接到读卡器的 CF 卡时,我将使用类似
zcat name_of_file > /dev/sdb
Run Code Online (Sandbox Code Playgroud)
在 Windows 中,我认为读卡器将作为驱动程序出现,我认为我们将做类似的事情。那么,“一切都是文件”的哲学在这里有何不同?