我遇到了一个 Linux 命令,builtin cd
.
命令builtin cd
和之间有什么区别cd
?
事实上,我对差异做了一些研究,但我找不到对此的显着和重要的解释。
通常,shell 脚本在脚本文件的第一行包含以下注释:#!/bin/sh
. 根据我的研究,这被称为“哈希爆炸”,这是常规评论。此注释通知 Unix 该文件由目录下的 Bourne Shell 执行/bin
。
我的问题从那一点开始。直到现在我还没有看到这样的评论#!/bin/bash
。它总是#!/bin/sh
。但是,Ubuntu 发行版没有 Bourne Shell 程序。他们有 Bourne Again Shell (bash)。
在这一点上,将注释#!/bin/sh
放在用 Ubuntu 发行版编写的 shell 脚本中是否正确?
我做了有关使用文件的一些研究bash
和sh
扩展。大多数人和资源都说,如果一个文件有bash
扩展名,那么它就包含bash
脚本。同样,带有sh
扩展名的文件包含sh
脚本。
但是,我找不到 bash 和 sh 脚本之间的区别。有一些课程和文章旨在教人们在 shell 上编写脚本,它们都具有标题shell scripting
。
在这一点上,shell 脚本对应于哪一个?
Bash 脚本或 Sh 脚本。
我试图理解的是 bash 和 sh 脚本之间的区别。
我找到了一些关于什么是“地址绑定”的解释。他们说“地址绑定是将虚拟或逻辑地址映射到物理地址的操作”。
这个定义正确吗?
我无法确定它是否正确,因为大学的演示文稿说将虚拟地址转换为物理地址是在执行时执行的。但是,地址绑定表示绑定操作可以在编译时、加载时或执行时实现。
这说明存在矛盾。
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
int main( int argc, char *argv[] ){
FILE *fptr;
pid_t pid;
fptr = fopen("Shared File.txt", "a");
pid = fork();
if( pid > 0 ){ // parent process
int counter = 0;
while( counter < 10 ){
fprintf(fptr, "a");
++counter;
}
wait(NULL);
}
else{
int counter = 0;
while( counter < 5 ){
fprintf(fptr, "b");
++counter;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我执行此代码时,代码生成的文件包含此消息:bbbbbaaaaaaaaaa
每当我执行此代码时,都会收到相同的消息。为什么进程不以混洗顺序写入文件?
为什么操作系统首先尝试完成子进程?
我对消息的期望是这样的: baabbaaabaaabaa 进程之间没有连续的过渡。