免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1653 | 回复: 5
打印 上一主题 下一主题

export $var 的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-16 21:24 |只看该作者 |倒序浏览
file--export_var.bash
    #!/bin/bash
    VAR_TEST="This is var who want be known by every child"
    export $VAR_TEST

file--show_var.bash
    #!/bin/bash
    echo $VAR_TEST


$source  export_var.bash
$./show_var.bash

在我看来,这里的$VAR_TEST 是能够被输出到bash的环境
并且以后从这个bash fork()的进程都能看到这个变量(的拷贝)

但是好像不行。不知道问题在哪里


还有就是IPC 问题,如果我这个$VAR_TEST 需要送给其他 process ,shell 里面有没有什么办法?

[ 本帖最后由 iamkey9 于 2006-12-16 21:27 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-12-16 21:36 |只看该作者
  1. export VAR_TEST
复制代码


用其他语言编写的程序, 可以通过系统调用访问环境变量.

论坛徽章:
0
3 [报告]
发表于 2006-12-16 22:27 |只看该作者
原帖由 Edengundam 于 2006-12-16 21:36 发表
  1. export VAR_TEST
复制代码


用其他语言编写的程序, 可以通过系统调用访问环境变量.


呵呵,谢谢,犯了个低级错误。

论坛徽章:
0
4 [报告]
发表于 2006-12-16 22:32 |只看该作者
第二个问题可以用命名管道或协进程解决,仅ksh支持协进程。
若只是进程之间简单交互的话,建议用信号。

论坛徽章:
0
5 [报告]
发表于 2006-12-16 22:48 |只看该作者
原帖由 一梦如是 于 2006-12-16 22:32 发表
第二个问题可以用命名管道或协进程解决,仅ksh支持协进程。
若只是进程之间简单交互的话,建议用信号。

1
谢谢,兄弟,我理解命名管道的概念,但是我不知道在shell 里如何创建?


2
譬如,现在 userA 和 userB 都通过ssh 连接到了server 获得了 shell

我们需要一个变量,假设叫做  $PERCENT 代表某个处理所完成的百分比
这个处理是userA在做,在不断更新自己的$PERCENT

这个时候userB 想查询一下这个结果,  它执行query  ,其实就是一个bash脚本 ,执行" echo $PERCENT "
ok 这个时候 userA做是没有问题,但是userB来做就有问题了。

似乎有几种方法
1.临时文件,这个是我想到的最简单的IPC了。
2.fork shell 前就export

有没有一种办法,让userA 和 userB 共享(同步)某个同名变量,是否精确同步我觉得问题不大

[ 本帖最后由 iamkey9 于 2006-12-16 22:51 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-12-17 10:09 |只看该作者
看您的叙述,感觉用临时文件的方法就足可以了,因为B只是简单的从临时文件读出信息,不利用此信息做什么,因此不用考虑这里的同步问题。唯一要注意的是A不可同时存在两个实例,而这个问题shell版讨论过几次,好像至今还没有完美的shell解决方法(woodie他们上次讨论出的方法也还不完美)。不过看您的应用,感觉完全可以简单规避此问题。
如想研究如何创建命名管道,请
  1. man mkfifo
复制代码
即使使用命名管道来做,依然要面对A进程本身实例导致竟态条件的问题。

[ 本帖最后由 一梦如是 于 2006-12-17 10:15 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP