<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://200yi.com/ff_internal/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://200yi.com/ff_internal/feed.php">
        <title>FAIRYFAR-INTERNAL wiki:OS:Linux:进程与线程</title>
        <description></description>
        <link>http://200yi.com/ff_internal/</link>
        <image rdf:resource="http://200yi.com/ff_internal/lib/tpl/mnml-blog/images/favicon.ico" />
       <dc:date>2026-04-28T04:49:29+0800</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%20ipcs%E5%91%BD%E4%BB%A4%E4%BD%BF%E7%94%A8&amp;rev=1687008318&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E6%9F%A5%E8%AF%A2%E5%8F%AF%E6%89%A7%E8%A1%8C%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%90%84%E6%AE%B5%E5%A4%A7%E5%B0%8F&amp;rev=1687008318&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E6%A0%B9%E6%8D%AE%E5%87%BD%E6%95%B0%E5%90%8D%E6%9F%A5%E6%89%BE%E5%87%BD%E6%95%B0%E5%9C%B0%E5%9D%80&amp;rev=1703005205&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E8%8E%B7%E5%8F%96%E7%BA%BF%E7%A8%8B%E7%9A%84PID%EF%BC%88TID%E3%80%81LWP%EF%BC%89%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E5%BC%8F&amp;rev=1687008319&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E7%9B%91%E8%A7%86%E8%BF%9B%E7%A8%8B%E5%88%9B%E5%BB%BA%E5%92%8C%E6%B6%88%E8%80%97%E4%BA%8B%E4%BB%B6&amp;rev=1687008318&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E7%BA%BF%E7%A8%8B%E4%B9%8B%E7%BA%BF%E7%A8%8B%EF%BC%8C%E7%BA%BF%E7%A8%8B%E7%BB%84%EF%BC%8C%E8%BF%9B%E7%A8%8B%EF%BC%8C%E8%BD%BB%E9%87%8F%E7%BA%A7%E8%BF%9B%E7%A8%8B&amp;rev=1687008319&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:POSIX%E8%A7%84%E8%8C%83%E4%B8%AD%E7%9A%84%E9%9D%9E%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8%E7%9A%84%E5%87%BD%E6%95%B0&amp;rev=1687008319&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:%E5%B0%86%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C%E7%9A%84%E8%BF%9B%E7%A8%8B%E8%B0%83%E5%BA%A6%E8%B0%83%E5%BA%A6%E5%88%B0%E5%89%8D%E5%8F%B0&amp;rev=1687008319&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:%E6%9D%A1%E4%BB%B6%E5%8F%98%E9%87%8F%E7%9A%84%E9%99%B7%E9%98%B1%E4%B8%8E%E6%80%9D%E8%80%83&amp;rev=1687008319&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:%E6%89%BE%E5%87%BA%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%B1%80%E9%83%A8%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F&amp;rev=1687008319&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://200yi.com/ff_internal/lib/tpl/mnml-blog/images/favicon.ico">
        <title>FAIRYFAR-INTERNAL</title>
        <link>http://200yi.com/ff_internal/</link>
        <url>http://200yi.com/ff_internal/lib/tpl/mnml-blog/images/favicon.ico</url>
    </image>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%20ipcs%E5%91%BD%E4%BB%A4%E4%BD%BF%E7%94%A8&amp;rev=1687008318&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:18+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:OS:Linux:进程与线程:Linux ipcs命令使用</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%20ipcs%E5%91%BD%E4%BB%A4%E4%BD%BF%E7%94%A8&amp;rev=1687008318&amp;do=diff</link>
        <description>ipcs - show information on IPC facilities.

IPC - 进程间通信（Inter-Process Communication）。

一、ipcs

ipcs是linux/uinx上提供关于一些进程间通信方式信息的命令，包括共享内存，消息队列，信号。

ipcs参数说明</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E6%9F%A5%E8%AF%A2%E5%8F%AF%E6%89%A7%E8%A1%8C%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%90%84%E6%AE%B5%E5%A4%A7%E5%B0%8F&amp;rev=1687008318&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:18+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:OS:Linux:进程与线程:Linux查询可执行程序的各段大小</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E6%9F%A5%E8%AF%A2%E5%8F%AF%E6%89%A7%E8%A1%8C%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%90%84%E6%AE%B5%E5%A4%A7%E5%B0%8F&amp;rev=1687008318&amp;do=diff</link>
        <description>方法


[yz@test yz]$ size /bin/psql
   text	   data	    bss	    dec	    hex	filename
 434268	   3156	   2384	 439808	  6b600	/bin/psql


其中，

	* code segment/text segment：.TEXT
	* Initialized Data Segment：.DATA
	* Uninitialized Data Segment：.BSS</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E6%A0%B9%E6%8D%AE%E5%87%BD%E6%95%B0%E5%90%8D%E6%9F%A5%E6%89%BE%E5%87%BD%E6%95%B0%E5%9C%B0%E5%9D%80&amp;rev=1703005205&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-20T01:00:05+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:OS:Linux:进程与线程:Linux根据函数名查找函数地址</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E6%A0%B9%E6%8D%AE%E5%87%BD%E6%95%B0%E5%90%8D%E6%9F%A5%E6%89%BE%E5%87%BD%E6%95%B0%E5%9C%B0%E5%9D%80&amp;rev=1703005205&amp;do=diff</link>
        <description>转自：https://www.cnblogs.com/yangyi54920/p/15179035.html

linux平台上查问题时，定位到出错的函数地址，但无法知道是哪个模块的函数，记录如下函数可实现：


#include &lt;dlfcn.h&gt;

int getFuncAddrByName(char *funcName, unsigned int nameLen)
{
    void *handle = NULL;
    void *iptr = NULL;

    /* open the needed object */
    handle = dlopen(NULL, RTLD_LOCAL | RTLD_LAZY);
    if(handle == NULL)
    {
        return NULL;
    }

    /* find the address of function and data objects */
    iptr = dlsym(handle, funcName);
    dlclose(handle);

    if(…</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E8%8E%B7%E5%8F%96%E7%BA%BF%E7%A8%8B%E7%9A%84PID%EF%BC%88TID%E3%80%81LWP%EF%BC%89%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E5%BC%8F&amp;rev=1687008319&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:19+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:OS:Linux:进程与线程:Linux获取线程的PID（TID、LWP）的几种方式</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E8%8E%B7%E5%8F%96%E7%BA%BF%E7%A8%8B%E7%9A%84PID%EF%BC%88TID%E3%80%81LWP%EF%BC%89%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E5%BC%8F&amp;rev=1687008319&amp;do=diff</link>
        <description>转自：https://blog.csdn.net/test1280/article/details/87974748

在 Linux C/C++ 中通常是通过 pthread 库进行线程级别的操作。

在 pthread 库中有函数：


pthread_t pthread_self(void);


它返回一个 pthread_t 类型的变量，指代的是调用 pthread_self 函数的线程的 “ID”。__</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E7%9B%91%E8%A7%86%E8%BF%9B%E7%A8%8B%E5%88%9B%E5%BB%BA%E5%92%8C%E6%B6%88%E8%80%97%E4%BA%8B%E4%BB%B6&amp;rev=1687008318&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:18+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:OS:Linux:进程与线程:Linux监视进程创建和消耗事件</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E7%9B%91%E8%A7%86%E8%BF%9B%E7%A8%8B%E5%88%9B%E5%BB%BA%E5%92%8C%E6%B6%88%E8%80%97%E4%BA%8B%E4%BB%B6&amp;rev=1687008318&amp;do=diff</link>
        <description>forkstat

使用forkstat监控：


forkstat -e fork


参考

	* Windows/Linux用户态监控进程启动事件方法</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E7%BA%BF%E7%A8%8B%E4%B9%8B%E7%BA%BF%E7%A8%8B%EF%BC%8C%E7%BA%BF%E7%A8%8B%E7%BB%84%EF%BC%8C%E8%BF%9B%E7%A8%8B%EF%BC%8C%E8%BD%BB%E9%87%8F%E7%BA%A7%E8%BF%9B%E7%A8%8B&amp;rev=1687008319&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:19+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:OS:Linux:进程与线程:Linux线程之线程，线程组，进程，轻量级进程</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:Linux%E7%BA%BF%E7%A8%8B%E4%B9%8B%E7%BA%BF%E7%A8%8B%EF%BC%8C%E7%BA%BF%E7%A8%8B%E7%BB%84%EF%BC%8C%E8%BF%9B%E7%A8%8B%EF%BC%8C%E8%BD%BB%E9%87%8F%E7%BA%A7%E8%BF%9B%E7%A8%8B&amp;rev=1687008319&amp;do=diff</link>
        <description>摘自：

	* http://www.it165.net/os/html/201305/5123.html
	* https://www.cnblogs.com/vinozly/p/5617970.html

Thread Local Storage，线程本地存储，大神Ulrich Drepper有篇PDF文档是讲TLS的，我曾经努力过三次尝试搞清楚TLS的原理，均没有彻底搞清楚。这一次是第三次，我沉浸glibc的源码和kernel的源码中，做了一些实验，也有所得。对Linux的线程有了进一步的理解。</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:POSIX%E8%A7%84%E8%8C%83%E4%B8%AD%E7%9A%84%E9%9D%9E%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8%E7%9A%84%E5%87%BD%E6%95%B0&amp;rev=1687008319&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:19+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:OS:Linux:进程与线程:POSIX规范中的非线程安全的函数</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:POSIX%E8%A7%84%E8%8C%83%E4%B8%AD%E7%9A%84%E9%9D%9E%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8%E7%9A%84%E5%87%BD%E6%95%B0&amp;rev=1687008319&amp;do=diff</link>
        <description>转自：

	* https://blog.csdn.net/yaochunnian/article/details/7258446
	* https://blog.csdn.net/an_zhenwei/article/details/8995188

测试程序


pthread_mutex_t st_lock;

void* test_thd_func(void *p_arg)
{    
    pthread_detach(pthread_self());
    char ac_name[1024] = {};
    for (int i = 0; i &lt; 10000000; i++)
    {
        sprintf(ac_name,&quot;stra_1_fe_filter_dt_other_hadoop_arg_%d&quot;,i);
        printf(&quot;setenv %s\n&quot;,ac_name);
        pthread_mutex_lock(&amp;st_lock);
        setenv(ac_name,&quot; 1500&quot;,0);
        p…</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:%E5%B0%86%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C%E7%9A%84%E8%BF%9B%E7%A8%8B%E8%B0%83%E5%BA%A6%E8%B0%83%E5%BA%A6%E5%88%B0%E5%89%8D%E5%8F%B0&amp;rev=1687008319&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:19+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:OS:Linux:进程与线程:将后台运行的进程调度调度到前台</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:%E5%B0%86%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C%E7%9A%84%E8%BF%9B%E7%A8%8B%E8%B0%83%E5%BA%A6%E8%B0%83%E5%BA%A6%E5%88%B0%E5%89%8D%E5%8F%B0&amp;rev=1687008319&amp;do=diff</link>
        <description>有时候，我们想把一个后台运行的进程调度到前台运行。

例子：


[yz@bogon test]$ ./test &amp;
[1] 8109
[yz@bogon test]$ jobs
[1]+  Running                 ./test &amp;
[yz@bogon test]$ fg %1
./test


有如，有时候某个正在调试的gdb进程被转入了后台运行，那么可以使用上述方法再次将其调度到前台：</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:%E6%9D%A1%E4%BB%B6%E5%8F%98%E9%87%8F%E7%9A%84%E9%99%B7%E9%98%B1%E4%B8%8E%E6%80%9D%E8%80%83&amp;rev=1687008319&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:19+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:OS:Linux:进程与线程:条件变量的陷阱与思考</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:%E6%9D%A1%E4%BB%B6%E5%8F%98%E9%87%8F%E7%9A%84%E9%99%B7%E9%98%B1%E4%B8%8E%E6%80%9D%E8%80%83&amp;rev=1687008319&amp;do=diff</link>
        <description>转自：https://www.cnblogs.com/liyuan989/p/4240271.html

一、前言

在多线程编程中，互斥锁与条件变量恐怕是最常用也是最实用的线程同步原语。

关于条件变量一共也就pthread_cond_init、pthread_cond_destroy、pthread_cond_wait、pthread_cond_timedwait、pthread_cond___________________</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:%E6%89%BE%E5%87%BA%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%B1%80%E9%83%A8%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F&amp;rev=1687008319&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:19+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:OS:Linux:进程与线程:找出程序的局部静态变量</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:OS:Linux:%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B:%E6%89%BE%E5%87%BA%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%B1%80%E9%83%A8%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F&amp;rev=1687008319&amp;do=diff</link>
        <description>全局static变量，可以使用gdb的“info variables”找出，且可以列出变量所在文件（有符号库的情况下）。但是函数局部的static变量就比较麻烦了。

先看一个例子：


#include &lt;sys/syscall.h&gt;
#include &lt;stdio.h&gt;

void fun()
{
    static int ls_pid1 = 0;  // 初始化为0
    int pid1 = syscall(SYS_gettid);
    ls_pid1 = pid1;
    printf(&quot;%d\n&quot;, ls_pid1);
}

int main()
{
    int pid = syscall(SYS_gettid);
    static int ls_pid = 1;  // 初始化非0
    ls_pid = pid;
    printf(&quot;%d\n&quot;, ls_pid);
    fun();
    return 0;
}

__…</description>
    </item>
</rdf:RDF>
