[GNU/Linux] Linux系统调用-线程相关(一):基本知识

线程包含的信息:每个线程中都包含有表示自身执行环境的信息,其中至少包括:标识线程的线程ID一组寄存器的值调度优先级和策略信号屏蔽字errno变量线程的私有数据
线程函数的错误处理与返回值:与一般的POSIX函数不同,线程函数在执行发生错误的时候,一般不会设置errno全局变量值,而是直接返回表示错误类别的错误码。因此下面的函数若不特殊说明,一般不会设置errno

线程标识符

函数原型及解释

int pthread_equal(pthread_t t1, pthread_t t2);  //判断两个线程ID是否相同
pthread_t pthread_self(void);                   //获得自身的线程ID
  • 返回值:pthread_equal函数两个参数表示的线程ID若相同,则返回非0值,反之则返回0;而pthread_self函数将返回调用线程的线程ID。
  • t1t2:要判断的两个线程ID。

创建线程

函数原型及解释

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
  • 返回值:若创建成功,则返回0,若创建失败,
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 `ldd` 命令来查看一个 Linux 程序需要调用哪些共享库。这个命令会列出程序依赖的动态链接库的路径。 具体来说,可以在终端中输入以下命令: ``` ldd /path/to/your/program ``` 其中,`/path/to/your/program` 是你要查看的程序的路径。该命令会输出程序依赖的动态链接库的路径列表,如: ``` linux-vdso.so.1 => (0x00007ffd43756000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f708d7a5000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f708d49c000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f708d0d6000) /lib64/ld-linux-x86-64.so.2 (0x00007f708d9dd000) ``` 其中每一行包含库的路径和在程序中的地址。需要调用的库路径通常以 `lib` 开头。例如,上面的输出中程序需要调用 `libpthread.so.0`,`libm.so.6` 和 `libc.so.6` 这三个库。 ### 回答2: 要查看一个Linux程序需要调用哪些库,可以使用以下几种方法: 1. 使用ldd命令:ldd命令可以列出一个可执行文件所依赖的共享库。在终端中输入ldd加上程序的路径,如:ldd /path/to/program。系统会输出该程序所依赖的共享库列表。 2. 使用readelf命令:readelf命令是GNU Binutils软件包中的工具之一,可用于查看可执行文件的结构信息。在终端中输入readelf加上程序的路径,如:readelf -d /path/to/program。系统会输出该程序的动态结构信息,包括所依赖的共享库。 3. 使用objdump命令:objdump命令也是Binutils软件包中的工具之一,可以对可执行文件进行反汇编。在终端中输入objdump加上程序的路径,如:objdump -p /path/to/program。系统会输出该程序的段头信息,包括所依赖的共享库。 通过以上方法,我们可以查看一个Linux程序需要调用哪些库。这对于程序的开发、调试和部署都非常重要,可以帮助我们确保所需的库已经安装,并能够正确地加载和运行程序。 ### 回答3: 在Linux系统中,可以使用ldd命令来查看一个程序需要调用哪些库。 使用方法如下: 1. 打开终端窗口,在命令行中输入ldd,然后在空格后加上待查询程序的路径,按下回车键。 示例:ldd /usr/bin/gcc 这将显示出gcc程序所需要调用的所有库文件。 2. 当执行ldd命令后,终端会输出一段关于这个程序的动态链接库(也称为共享库)的信息。每行的开头是共享库的路径,紧随其后是共享库的路径的匹配类型。 示例:/lib64/ld-linux-x86-64.so.2 (0x7f7abffff000) 这是程序所依赖的动态链接器库,用于加载和链接其他共享库。 示例:libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x7f7ac01bf000) 这是程序所依赖的线程库,用于支持多线程编程。 示例:libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x7f7abf0a0000) 这是程序所依赖的数学库,用于进行数学计算。 3. 通过不断查看终端输出的信息,你可以了解到程序所需要调用的所有库文件。 需要注意的是,如果某个库文件不存在或者不可访问,ldd命令将会输出"not found"的提示信息。如果某个库文件无法找到,可能会导致程序无法正常运行。 通过使用ldd命令,我们可以方便地查看一个Linux程序需要调用哪些库,这对于排查程序依赖问题和解决运行时错误非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值