小编Jer*_*ome的帖子

在哪里可以找到函数 pause(void) 和 sigsuspend(set) 的源文件

我想在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 glibc

6
推荐指数
1
解决办法
856
查看次数

Linux 从零开始的 bash 问题:$() 语法错误

当我尝试按照 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 问题就在这里

任何的想法?

linux lfs

3
推荐指数
1
解决办法
1408
查看次数

标签 统计

linux ×2

glibc ×1

lfs ×1