当前位置:  技术问答>linux和unix

全局下定义的static变量的问题

    来源: 互联网  发布时间:2015-08-17

    本文导语:  全局下定义的static变量在fork和pthread是如何处理的,是复制还是共享 例如: static int gval; main() {     ....     if(0 == fork())     {         gval = ??;         ....;      }     .... } 或 static int gval = ...

全局下定义的static变量在fork和pthread是如何处理的,是复制还是共享

例如:

static int gval;

main()
{
    ....
    if(0 == fork())
    {
        gval = ??;
        ....;
     }
    ....
}


static int gval = 10;
main()
{
     ....
     pthread_create(...., dosth);
     ....
}

dosth(void)
{
   gval = ??;
   ....
}

对以上两个结构而言,static变量是否共享还是独立的?
我手头没有unix,谁帮看看

|
ft,原来楼主的例1例2跟顶楼不同,我那个回复说的是fork和pthread_create的区别啊
pthread_create出来的东西都是共享的,static也不例外
例2是编译不过的,因为那个static出来的int作用域不是全局的,别的地方extern不到

gcc -o test1 test1.c -lpthread

#include 
#include 


static int gval = 10;
void* test();

int main()
{
        int ret;
        pthread_t pt;
        ret = pthread_create( &pt, NULL, test, NULL );
        if( ret != 0 )
        {
                printf( "error thread createn" );
                return 0;
        }
        sleep(3);
        if( 20 == gval )
                printf( "共享n" );
        else
                printf( "独立n" );
        return 0;
}

void* test()
{
        gval = 20;
        return 0;
}

|
闹了半天楼主都没弄明白我说的东西
-_-b

|
子进程会产生另外一个指针变量,虽然但它和父进程的指针的值是相同的,在子进程里面改变指针指向的内容,不会影响父进程。因为指针寻址还会加上进程首地址作偏移量。

|
上面的说法可能会让你产生误解,补充一下吧:
不同进程运行在各自的内存空间中,每个进程都有他独立的内存空间,即操作系统为每个进程分配一个物理地址,进程中的地址只是一个相对地址而已,并不是真正的指向物理地址,代码和变量的实际地址由操作系统和硬件来转换。

|
一个进程创建的线程是分享共同的内存空间的

|
楼上正好说反了
例一里的gval是个进程独立的
例二中才是共享的

    
 
 

您可能感兴趣的文章:

  • KDevelop下定义全局变量的问题?
  • 全局结构体变量和全局结构体指针变量
  • static全局变量与普通的全局变量的区别详细解析
  • 在一个进程中我定义了几个全局变量,然后我又fork了几个子进程,子进程中是否可以各自对全局变量进行修改,如果各子进程都对其进行修改,
  • 在JBUILDER中如何使用全局变量,最好举一个例子。我也不知道在哪里定义全局变量?
  • 动态库中的变量(全局和自动变量)在什么地方存储,内存在什么位置分配?
  • linux动态链接库里全局变量和静态变量会导致动态库不可重入吗?
  • Java中怎样定义全局变量???
  • PHP 超全局变量库 superGlobals
  • 网卡驱动使用全局变量
  • PHP static局部静态变量和全局静态变量总结
  • c++作用域运算符用法(全局变量和局部变量)
  • 多进程中的全局变量问题,多谢帮忙!!!!
  • linux内核怎么定义汇编全局变量及在c文件中使用这个变量?有关0。11下的字符回显
  • linux中大量的全局变量怎么体现结构化的程序设计?
  • 求解关于全局变量的问题
  • 条件编译可以使用全局变量吗?
  • 如何不通过全局变量和静态变量与模态对话框进行数据交换?
  • C# 全局变量的学习小结
  • 除了全局变量,线程还可以通过哪些方法向定时器传递数据?
  • jsp中怎样定义全局变量
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • GNOME全局菜单 gnome2-globalmenu
  • 关于java类的全局变量问题
  • 全局路径匹配 GPAMatching
  • asp.net读取本地与全局资料文件的代码
  • 全局唯一ID生成服务 snowflake
  • 如何使连接池成为全局的?
  • 请问,uboot的命令函数,能否调用全局变量
  • JQuery中使用Ajax赋值给全局变量失败异常的解决方法
  • 传说很难的一个问题--全局变量问题
  • 模块编程中对内核全局变量引用的问题
  • linux内核全局变量定义问题!
  • debian下用脚本设置 全局变量的问题
  • 建一个linux共享库(.so.x.x文件)里边包含类、全局变量,结构体等
  • QT下如何定义全局变量
  • 全局变量问题求助
  • JQuery中使用Ajax赋值给全局变量异常的解决方法
  • 全局脚本是何文件?
  • 一个简单的全局变量的问题
  • 如何用c实现生成一个类似windows下uuid的全局唯一串的算法
  • java的应用程序中如何定义一个全局变量,在程序的任何地方都可以修改使用?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3