我想在glibc-2.14.1包中找到pause和sigsuspend的源文件。我grep包,发现文件sysdeps/posix/pause.c有函数pause的定义,代码是
int
__libc_pause (void)
{
sigset_t set;
__sigemptyset (&set);
__sigprocmask (SIG_BLOCK, NULL, &set);
/* pause is a cancellation point, but so is sigsuspend.
So no need for anything special here. */
return __sigsuspend (&set);
}
weak_alias (__libc_pause, pause)
Run Code Online (Sandbox Code Playgroud)
我也grep了sigsuspend函数定义的包,有几个文件都有定义,比如sysdeps/posix/sigsuspend.c和sysdeps/unix/sysv/linux/sigsuspend.c。
sysdeps/posix/sigsuspend.c 中 sigsuspend 的定义是
int
__sigsuspend (set)
const sigset_t *set;
{
sigset_t oset;
int save;
if (set == NULL)
{
__set_errno (EINVAL);
return -1;
}
if (sigprocmask (SIG_SETMASK, set, &oset) < 0)
return -1;
(void) pause();
save = errno;
if (sigprocmask …Run Code Online (Sandbox Code Playgroud) 当我尝试按照 Linux 从头开始说明第 6.9 章构建 glibc 时。Glibc-2.14.1,我收到一个关于$(command).
简化的问题是我可以输入
echo `ls`
Run Code Online (Sandbox Code Playgroud)
并得到预期的结果。
但是当我输入
echo $(ls)
Run Code Online (Sandbox Code Playgroud)
应该做同样的事情,但我得到
**bash: command substitution: line 78: syntax error near unexpected token `)'
bash: command substitution: line 78: `ls)'**
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我按照Linux的指令从头开始创建的bash程序无法$()正确处理。
glibc 问题就在这里。
任何的想法?