为什么我看到的线程数比我在“ps”列表中创建的线程数多了一个?

2023-12-02

当我创建一个线程时(pthread_create())从我的主进程中,我看到三(3)个线程ps上市了,这是为什么呢?也就是说,我看到主线程的进程,一个用于创建的线程,第三个用于其他线程。还有什么东西?一切工作正常,我只是想知道额外列出的过程是什么。

~/ cat test.c
#include <errno.h>
#include <pthread.h>
static          pthread_t       thread;
void * test_thread(void * ptr)
{
    sleep(30);
    return(ptr);
}
void thread_init(void)
{
     if (pthread_create( &thread , NULL, test_thread, NULL))
          perror("Thread not created!");
}
int main(int argc, char ** argv)
{
    thread_init();
    sleep(30);
}

当我在运行 Linux 2.6.14 和 BusyBox(但使用 bash 2.04g)的系统上执行此代码时,ps重新启动并启动上面的测试程序后我得到的列表:

...
   52 root            SW  [kswapd0]
  667 root            SW  [mtdblockd]
  710 root            SWN [jffs2_gcd_mtd4]
  759 root        980 S   /bin/sh
  760 root        500 S   /bin/inetd
  761 root        516 S   /bin/boa
  762 root        644 S   /sbin/syslogd -n
  763 root        640 S   /sbin/klogd -n
  766 root       1516 S   /bin/sshd -i
  767 root       1036 S   -sh
  768 root        420 S   ./test
  769 root        420 S   ./test
  770 root        420 S   ./test
  771 root        652 R   ps

该内核是 2.6.14 内核,添加了一些驱动程序模块。


它可能是“线程管理器”线程。参见答案 D.5link.

如果大多数现代 Linux 系统使用 NPTL,您将不会看到列出的额外进程。但我搜索了一下,听起来 BusyBox 使用了 ulibc,我认为它最近才添加了 NPTL 支持。所以我不确定,但我猜测您正在使用 LinuxThreads 并将管理器线程视为额外线程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我看到的线程数比我在“ps”列表中创建的线程数多了一个? 的相关文章

  • 如何从 Linux 命令行确定 LCD 显示器是否打开

    如何通过 Linux 命令行判断计算机的显示器是否打开 关闭 我传统上认为显示器是仅输出的设备 但我注意到 Gnome 显示器首选项对话框具有 检测显示器 功能 这可以推广到确定显示器是否物理关闭吗 VESA DDC 连接是I2C http
  • Linux 阻塞与非阻塞串行读取

    I have 这段代码 https stackoverflow com questions 6947413 how to open read and write from serial port in c用于在Linux中从串行读取 但我不
  • C++ 中的多个异步调用

    我想多次调用异步方法 一个简化的示例如下所示 size t counter std string s return s size void stringCountAccumulator std vector
  • %config(noreplace) 文件上出现意外的 RPM 冲突

    我正在创建我自己的RPM using rpmbuild My RPM 包含配置文件哪个应该永远不会被覆盖 即使 RPM 包含这些配置文件的新版本 为了存档这个 我用以下标签标记了它们 config noreplace opt mypacka
  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • 在Linux中将日期附加到文件名

    我想在文件名旁边添加日期 somefile txt 例如 somefile 25 11 2009 txt 或 somefile 25Nov2009 txt 或任何类似的内容 也许脚本或终端窗口中的某些命令可以执行 我正在使用Linux Ub
  • 多线程——更快的方法?

    我有一堂有吸气剂的课程getInt 和一个二传手setInt 在某个领域 比如说领域 Integer Int 一个类的一个对象 比如说SomeClass The setInt 这里是同步的 getInt isn t 我正在更新的值Int来自
  • bash "&" 不打印 "[1]+ Done "

    我在 bashrc 中调用一个脚本来打印打开终端时收到的新消息数 我希望该调用在访问网络时是非阻塞的 有时需要几秒钟 这意味着我无法使用终端直到完成 但是如果我输入 mailcheck 在我的 bashrc 中 它工作正常 但然后打印一个空
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • SVN 不断提示我输入密码并拒绝缓存我的凭据

    环境 Eclipse Indigo Ubuntu 11 04 Subclipse 1 6 SVN 客户端 Subclipse RabbitVCS 我通过 svn ssh 连接 我的网址如下所示 svn ssh 我的名字 我的域名 路径 我可
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从
  • 为什么 proc/ID/maps 有多个共享库条目

    我正在查看嵌入式Linux下的proc ID maps 我注意到一些共享库在进程的内存映射中出现了几次 为什么会这样呢 40094000 400d9000 r xp 00000000 b3 09 723 system lib libc so
  • 如何并行运行一组函数并等待完成结果?

    我需要同时异步运行一组繁重的函数并将结果填充到列表中 这是伪代码 List
  • 有没有办法让 Linux CLI IO 重定向持久化?

    我有多个管道命令 如下所示 find options grep options xargs grep options 它们中的每一个都可能产生我不感兴趣的错误 权限错误 文件名空格错误等 因此 我想将所有错误重定向到 dev null 我知
  • 我如何知道用户在使用 ncurses (Linux) 的控制台中按下了 ESC 键?

    I have a problem in detecting whether I just got a plain ESC key just code 27 or whether it was another special key such
  • shell中基于正则表达式的颜色突出显示输出

    我想知道是否可以用颜色突出显示与某些字符串匹配的 shell 命令的输出 例如 如果我运行 myCommand 输出如下 gt myCommand DEBUG foo bar INFO bla bla ERROR yak yak 我希望所有
  • 选择多个模式的 awk 代码

    这是我的输入文件 比如modified txt r4544 n479826 2012 08 28 07 12 33 0400 Tue 28 Aug 2012 1 line Changed paths M branches 8 6 0 con
  • 从不同的线程关闭启动屏幕?

    我在用着WindowsForms应用程序库 http msdn microsoft com en us library microsoft visualbasic applicationservices windowsformsapplic
  • 运行连接到 Django 测试数据库的 Celery Worker

    背景 我正在开发一个项目 该项目使用 Celery 来安排将在未来某个时间运行的任务 这些任务推动最终状态机的状态向前发展 这是一个例子 未来的提醒计划在 2 天内发送给用户 当该计划任务运行时 会发送一封电子邮件 并且 FSM 会前进到下
  • 利用 SLURM 上的所有 CPU

    我想在集群上运行作业 不同节点上有不同数量的 CPU 我不知道哪些节点将分配给我 正确的选项是什么 以便作业可以在所有节点上创建与 CPU 一样多的任务 bin bash l SBATCH p normal SBATCH N 4 SBATC

随机推荐

  • 如何更改 ES6 箭头函数“this”指向的内容?

    In the traversenpm 包中有这个例子 var obj 5 6 3 7 8 2 1 f 10 g 13 traverse obj forEach function x if x lt 0 this update x 128 您
  • 使用php剪切flv视频

    我正在尝试提供 30 秒优质视频的预览 用户必须付费才能完整观看 所以我想在上传这些视频时创建一个30秒的视频文件 我如下使用 ffmpeg 但它不起作用 ffmpeg ss 00 00 00 0 t 00 00 30 0 i input
  • 子父事务回滚

    我有一个场景 我必须处理多个 sQL文件 每个文件包含 3 4 个插入或更新查询 现在当文件中的任何查询失败时我会这样做rollback整个事务意味着我们将回滚整个文件 并且在提交该文件之前执行的所有其他文件将被提交 我想要一个选项 用户可
  • 将缺失/非缺失值更改为二进制 (0/1)

    我的数据集是 df data frame x c 1 4 6 NA 7 NA 9 10 4 NA y c 10 12 NA NA 14 18 20 15 12 17 z c 225 198 NA NA NA 130 NA 200 NA 99
  • CMake 生成 makefile 的速度很慢

    当我运行 CMake 来构建忒伊亚图书馆使用 CMake 生成 makefile 非常慢 轻松需要 1 2 分钟 该项目本身有很多源文件 但我想知道是否有一种方法可以加快 makefile 的生成速度 有任何想法吗 None
  • 如何在没有控制台/本机应用程序交互式登录屏幕的情况下为 Graph API 生成 Azure Active Directory (AAD) 身份验证令牌?

    如何在没有控制台 本机应用程序交互式登录屏幕的情况下为 Graph API 生成 Azure Active Directory AAD 身份验证令牌 细节 我正在使用 Graph API 通过具有 委派 权限的 Azure Active D
  • R 中两个日期之间的总和/计数

    我有一个包含两列的数据框 一列是开始日期 另一列是结束日期 我需要获取一个包含两列的新数据框 一个是 日期 列 另一列是第一个数据框中的观察值计数 其中日期位于 开始 和 结束 之间 Have dates lt data frame Sta
  • Kendo ui 选择器 CSS 问题

    我正在使用 kendo ui 下拉列表和其他一些选择器 我想设置所选项目背景颜色的样式 我尝试过 k dropdown k state selected background color red 但所选项目的颜色没有改变 它仅设置为默认橙色
  • 使用 Application Insights 检测 Windows 服务

    是否可以使用 Application Insights 检测本地运行的 Windows 服务 没有必要像 Web 应用程序那样自动收集应用程序的指标 将自定义事件推送到 Azure 就足够了 我会让文档对此更加清楚 如果有一个核心 SDK
  • 我如何在android中设置自定义日期

    如何将日期设置为当年 25 12 12 月 例如 我正在使用这个代码 public static Calendar defaultCalendar Calendar currentDate Calendar getInstance curr
  • 以编程方式声明任意等级的数组

    在 C 中 数组分为三种类型 一维数组 锯齿形数组和多维矩形数组 问题是 给定一个特定大小的数组 我们如何创建一个具有相同维度和秩的新数组 对于多维矩形数组 似乎没有语法可以在运行时定义大小和等级 维数 C 在索引器中声明带有逗号的多维数组
  • 合并两个数组,同时保留原始数组顺序

    我正在编写一个从外部源 Twitter 请求数据的应用程序 该数据按时间顺序作为有序数组返回 外部阵列 项目 A 最新 Item B Item C 项目 D 最旧的 我将这些项目添加到另一个保留相同顺序的数组中 My array 项目 A
  • Thread.Abort 和替代方案

    这更多是出于个人好奇 兴趣 而不是我试图解决的特定问题 假设您有一个程序正在对用户提供的信息 例如搜索字符串 执行某些操作 这些信息会随着用户键入而更改 假设您想要向用户显示与他们在任何给定时间键入的内容最相关的信息 如果线程确实可以中止
  • PHP 中内爆二维数组

    我有一个像这样的数组 Array 0 gt Array 0 gt a 1 gt b 1 gt Array 0 gt c 2 gt Array 0 gt d 1 gt e 2 gt f 我想将数组转换为如下所示的字符串 arrtostr a
  • Spring Boot 项目设置设计决策

    我们将使用 Spring Boot 来创建服务 我们最初的想法是每个服务 不一定是微服务 都是独立的 并部署为 jar 文件 用于构建的 Maven 我想知道什么是一个好的 Spring Boot 项目结构 因为每个服务都是独立的 但我猜测
  • MS Exchange 服务器的 Grails 邮件插件配置

    我可以使用我的 gmail 帐户从我的 grails 应用程序发送电子邮件 但是当我使用 MS Exchange 服务器帐户时 我收到此错误 Message Mail server connection failed nested exce
  • 如果再次调用函数,则取消超时/计时器 --- debounce 函数

    我想创建一个启动超时的函数 但如果在计时器结束之前再次调用该函数 请取消原始调用并再次启动计时器 我想我可以这样做 function setTimer setTimeout gt do something 3000 但这不起作用 每次我运行
  • Ruby Regex 用于捕获两个字符串之间的所有内容(包括)

    我正在尝试清理一些 HTML 并仅删除一个标签 我真的很想避免使用 nokogiri 等 所以我出现了以下字符串 我想删除它 div class lt div gt m这有效 但它也会匹配并包括任何进一步的 div 文档中的标签 这是我不想
  • PySpark:如何转置数据框中的多列

    我是 Spark 新手 需要帮助将以下输入数据帧转换为所需的输出df 行到列 使用 PySpark 或 Spark Sql 输入数据框 A B C D 1 2 3 4 10 11 12 13 所需的输出 转置 数据 A 1 B 2 C 3
  • 为什么我看到的线程数比我在“ps”列表中创建的线程数多了一个?

    当我创建一个线程时 pthread create 从我的主进程中 我看到三 3 个线程ps上市了 这是为什么呢 也就是说 我看到主线程的进程 一个用于创建的线程 第三个用于其他线程 还有什么东西 一切工作正常 我只是想知道额外列出的过程是什