perl cgi中调用C可执行程序为什么在html中不显示?# Linux - Linux 操作系统b*32014-04-12 07:041 楼医生劝说不要这个小孩了,可是35周了,大家都舍不得,他昨天又去301医院问,说国内的技术不成熟,美国这个对这个病,有好的办法吗?多谢!
k*s2014-04-12 07:042 楼是一个月某个long weekend用一次。还是平时不用,一下take 1 week or 2 weeks off?我觉得可以每一个long weekend用一天两天,这样就可以连歇4,5天。这样最后还能剩下1个星期左右。一般manager希望怎么样?
V*y2014-04-12 07:043 楼随意浏览网页,看到一则新闻。大致意思是一个男的抛弃了相濡以沫的妻子和儿子,和自己的初恋女友结婚了。是什么让一个男人宁可顶着抛妻弃子的名声,也要和自己的初恋女友在一起。从道德角度,我们会说这个男人不现实,人品有问题,他不应该抛弃自己的妻儿去寻求什么初恋。可是他偏偏就是放不下心中的那一份美好的回忆,即使内心受到道德谴责,良心的叩问,依然和他的初恋远走高飞。很明显,他的老婆输在了“初恋”这两个字上面。可以说初恋是一个人的青春之中最美好的回忆。由初恋到白头固然是最美好的状态,但是能拥有这种幸运之人实在太少。初恋之所以美好,在于它的纯粹。在憧憬爱情的岁月里,有那么一个人可以牵动你所有的视线,假装和别人聊天,眼神也会不由自主的往有她的地方偷偷瞟一眼。看到她和别人聊天你会高兴,甚至她在发呆,你都会觉得特别可爱。一个人发呆,一个人对着镜子傻笑。终于有一天你鼓足勇气去表白,多么幸运,她竟然和你有相同的感觉。于是你们成为这个世界上最幸福的人。这种你喜欢我,而我也恰巧喜欢你的感情纯粹的让人感动。初恋让人难以释怀,甚至像新闻中的男主人公那样,应该也不是那么不可饶恕。或许,以后会因为种种原因导致你们不得不分开,开启一段新的人生。但是初恋的那份感受,确是一生中再难拥有的悸动。或许未来的某一天,你会笑着说起小时候的事,但是初恋,会是你用尽全力,也会把他珍藏到心底最柔软的那一块,陪着岁月一起沉淀出一缕醇香。
o*12014-04-12 07:044 楼我用perl写一个cgi的程序,其中调用了自己写的C程序(binary executable),需要其stdout,所以用的是backticks。如果单独运行perl cgi,结果正常,所有该print出来的全部出现,包括调用的C程序的output。但是一旦从html里面连接到这个perl cgi,C程序ouput的部分,在网页中不显示。我试着把调用C程序的部分改成调用Linux系统程序,比如ls,cat等等,其output在网页中就正常出现了。我很困惑,大概知道是因为C程序的output没有被返回到perl process里面。但是在单独执行perl程序的时候,调用的C就正常的输出到stdout了。又想了一想,可能是perl和C共享了屏幕显示,所以我分辨不出来。但是在运行perl程序的时候,被调用的C的输出没有返回到perl process,而是在另一个过程中,所以cgi创建的新网页就不显示了。但是对于调用的Linux系统程序,为什么能正确的返回呢?我半路出家,没学过操作系统,对于process,thread这些概念一知半解。大牛们能不能指点一下,如何设置,才能让C程序的stdout返回到perl中?多谢啦!
A*a2014-04-12 07:045 楼什么技术不成熟?延髓池增宽,美国这边的医院,对这个病,有什么好的办法吗?【在 b*******3 的大作中提到】: 医生劝说不要这个小孩了,可是35周了,大家都舍不得,他昨天又去301医院问,: 说国内的技术不成熟,美国这个对这个病,有好的办法吗?多谢!
C*a2014-04-12 07:046 楼4,5天跟3天区别不大啊,除非有特定出游计划.老板应该是希望员工们不要在活多的时候修假吧.off?【在 k***s 的大作中提到】: 是一个月某个long weekend用一次。还是平时不用,一下take 1 week or 2 weeks off?: 我觉得可以每一个long weekend用一天两天,这样就可以连歇4,5天。这样最后还能剩: 下1个星期左右。: 一般manager希望怎么样?
P*J2014-04-12 07:0410 楼别折腾了小孩又没有生下来【在 b*******3 的大作中提到】: 医生劝说不要这个小孩了,可是35周了,大家都舍不得,他昨天又去301医院问,: 说国内的技术不成熟,美国这个对这个病,有好的办法吗?多谢!
o*12014-04-12 07:0411 楼多谢提醒!我试过了,命令里面的"|"应该是在"c-prog"之后吧。但是这也不行,还是不能把输出返回给perl。【在 m**k 的大作中提到】: 能用python就别用perl了。: python 里有 subprocess.Popen: per里可以 open FD "| c-prog"
A*a2014-04-12 07:0412 楼不是这方面的医生或专家,个人认为是发育上的异常,没有什么可以治疗的,即使在美国也是诊断和排查。这种异常可能使新生儿以后出现发育迟缓或脑神经类疾病。风险有多大,有多严重,没人知道。后果只能由当事人家庭自己承担,生活就是这么无情。【在 b*******3 的大作中提到】: 治疗怀孕期的小孩小脑延髓池增宽,医生说国内这项技术不成熟,朋友让我问问这边的: 情况看看,毕竟小孩都这么长时间了,大家都舍不得不要了
t*n2014-04-12 07:0414 楼异于平均本身不是病。就像你验个血经常都有一两项在参考值以外。A. 医学上:先超声复查确认、再考虑有否其他异常,另外查染色体。就这一项异常,出来有问题的几率不大http://www.ncbi.nlm.nih.gov/pubmed/9360236http://www.yxzs.chinajournal.net.cn/EditorB/WebPublication/paperDigest.aspx?paperID=YXZS201221059&isCnki=ck01B. 医患关系:医生应说明可能出现哪些问题,概率多少,相比平均出生缺陷如何。你朋友两口子也要认识到,像楼上说的,投胎有风险,决定靠自己。 【在 b*******3 的大作中提到】: 医生劝说不要这个小孩了,可是35周了,大家都舍不得,他昨天又去301医院问,: 说国内的技术不成熟,美国这个对这个病,有好的办法吗?多谢!
t*n2014-04-12 07:0416 楼同意,这和技术完全无关。打个比方:孕早期的颈后透明带扫描,偏厚说明唐氏风险性高,不是动手术把透明带切薄能解决的。朋友理解错了,还是医生不靠谱?【在 A*****a 的大作中提到】: 不是这方面的医生或专家,个人认为是发育上的异常,没有什么可以治疗的,即使在美: 国也是诊断和排查。这种异常可能使新生儿以后出现发育迟缓或脑神经类疾病。风险有: 多大,有多严重,没人知道。后果只能由当事人家庭自己承担,生活就是这么无情。
w*g2014-04-12 07:0417 楼1. 先确保是否真的写到了stdout,单独运行perl cgi的时候用 > xxx看你要的输出有没有重定向到xxx里面。2. 换一个目录运行perl cgi看是不是还正确。apache调用cgi的时候目录可能和你用的不一样。3. 用sudo执行perl cgi,看是不是还是正确。apache调用你的程序会用apache/www/www-data类似的用户名调用。你可以su到该用户运行一下看是否正确。4. 看apache的错误日志, /var/log/apache2/error.log。perl【在 o******1 的大作中提到】: 我用perl写一个cgi的程序,其中调用了自己写的C程序(binary executable),需要: 其stdout,所以用的是backticks。: 如果单独运行perl cgi,结果正常,所有该print出来的全部出现,包括调用的C程序的: output。但是一旦从html里面连接到这个perl cgi,C程序ouput的部分,在网页中不显: 示。: 我试着把调用C程序的部分改成调用Linux系统程序,比如ls,cat等等,其output在网: 页中就正常出现了。: 我很困惑,大概知道是因为C程序的output没有被返回到perl process里面。但是在单: 独执行perl程序的时候,调用的C就正常的输出到stdout了。又想了一想,可能是perl: 和C共享了屏幕显示,所以我分辨不出来。但是在运行perl程序的时候,被调用的C的输
b*32014-04-12 07:0418 楼朋友不会理解错,他是学中医的,他们专门在山东省级医院和北京301医院去检查的。他说只要生下来智力没有问题,其它的他都可以用中医给小孩调理,而中医对小孩智力这块是空缺,这位朋友因为是中医,帮助过很多人,也办公益讲座关于保健的,小孩都快出生了,都舍不得打掉,不知道这样的小孩子生下来后,对智力有多大影响?
o*12014-04-12 07:0419 楼多谢上面的大牛们的指点!费了一个晚上终于找出来毛病了。但是我还有个问题,大牛们请继续帮忙。1. 我的那个c的可执行文件是从oracle数据库里面retrieve东西,然后打印到stdout。2. 我的问题其实不是C可执行文件的stdout没有返回到perl,而是C没有从数据库里面retrieve到东西。所以先纠正一下之前我的错误,不管是用backticks,还是openfilehandle "C-proc |",都是返回了的。3. 我是这样fix了原先的问题的:在perl文件中,加入了两行环境变量的设置,i.e. $ENV{'LD_LIBRARY_PATH'} = '...'; 和$ENV{'ORACLE_HOME'} = '...'; 之后就没问题了。4. 那个C可执行文件在command line直接运行是没有问题的,也就是说shell知道环境变量$LD_LIBRARY_PATH和$ORACLE_HOME的值。但是在perl文件的backticks中执行,这两个环境变量是空白的。5. 我的新问题是:在编程语言中,有没有一个简单的方法,一次性的把所有的shell环境变量全部输入进来?谢谢啦!
t*n2014-04-12 07:0420 楼按上述文献数据,再怀一胎而且产检一切正常的话,日后出现各种身心障碍的概率也差不多。目前产前能查的有限,自闭症、脑瘫什么的不可能排除。要保证大脑100%正常,那只能收养一个四五岁以上的。。。【在 b*******3 的大作中提到】: 朋友不会理解错,他是学中医的,他们专门在山东省级医院和北京301医院去检查的: 。他说只要生下来智力没有问题,其它的他都可以用中医给小孩调理,而中医对小孩智: 力这块是空缺,这位朋友因为是中医,帮助过很多人,也办公益讲座关于保健的,小孩: 都快出生了,都舍不得打掉,不知道这样的小孩子生下来后,对智力有多大影响?
f*32014-04-12 07:0421 楼shell 变量一般在 ~/.bash_profile.如果不是你可以自己建立个文件。==export LD_LIBRARY_PATH=......==把你的c 程序放在已shell script 里面。===#!/bin/bashsource /home_dir/.bash_profile/home_dir/bin/c_prog===再用Perl调用。
b*32014-04-12 07:0422 楼不是这个意思,他们这是第二胎,我朋友本身是个中医,帮助过很多人,而中医在这方面是空白,他也希望能知道这种情况下,生出来后,对小孩智力的影响,有没有支持数据,他希望能帮助更多的人。
o*12014-04-12 07:0423 楼多谢指点!不过下面的这个方法似乎也不行===#!/bin/bashsource /home_dir/.bash_profile/home_dir/bin/c_prog===按照你说的,先把两个变量export到$HOME/.bash_profile中(我还export到$HOME/.bashrc以及source了.bashrc)。然后script中的source之后多加了两行,一行是echo "world",另一行是echo "$LD_LIBRARY_PATH",前一个显示了,后一个没有。当然C的output也不显示。【在 f*****3 的大作中提到】: shell 变量一般在 ~/.bash_profile.如果不是你可以自己建立个文件。: ==: export LD_LIBRARY_PATH=...: ...: ==: 把你的c 程序放在已shell script 里面。: ===: #!/bin/bash: source /home_dir/.bash_profile: /home_dir/bin/c_prog
G*h2014-04-12 07:0425 楼运行 cgi 的那个系统用户跟你自己的用户不一样【在 o******1 的大作中提到】: 多谢指点!: 不过下面的这个方法似乎也不行: ===: #!/bin/bash: source /home_dir/.bash_profile: /home_dir/bin/c_prog: ===: 按照你说的,先把两个变量export到$HOME/.bash_profile中(我还export到$HOME/.: bashrc以及source了.bashrc)。然后script中的source之后多加了两行,一行: 是echo "world",另一行是echo "$LD_LIBRARY_PATH",前一个显示了,后一个没有。
o*12014-04-12 07:0426 楼运行cgi的就是我自己的一个perl文件。奇怪的是perl不认shell的环境变量。甚至做了如feng443所建议的,用一个shell script做container来装C可执行程序,并且在这个shell script中包括#!/bin/bash以及source用户配置文件也不行。我还试过,哪怕是echo $HOME都不打印。难道告诉perl程序环境变量,只有用$ENV{}这样的一个一个的手动载入?有没有更elegant的办法啦?【在 G*****h 的大作中提到】: 运行 cgi 的那个系统用户跟你自己的用户不一样
G*h2014-04-12 07:0428 楼文件是你的运行这个文件的进程是 httpd 调用 perl用的是 httpd 系统用户的环境变量【在 o******1 的大作中提到】: 运行cgi的就是我自己的一个perl文件。奇怪的是perl不认shell的环境变量。甚至做了: 如feng443所建议的,用一个shell script做container来装C可执行程序,并且在这个: shell script中包括#!/bin/bash以及source用户配置文件也不行。我还试过,哪怕是: echo $HOME都不打印。: 难道告诉perl程序环境变量,只有用$ENV{}这样的一个一个的手动载入?有没有更: elegant的办法啦?
o*12014-04-12 07:0429 楼多谢指点!我试着在那个shell script中echo几个apache2的环境变量,比如$APACHE_RUN_DIR和$APACHE_RUN_GROUP,还是没有打印出来。也许httpd的系统用户环境变量我没有找对。我是在/etc/apache2/envvars中找的。如果不对,应该在哪个文件中?谢谢啦!【在 G*****h 的大作中提到】: 文件是你的: 运行这个文件的进程是 httpd 调用 perl: 用的是 httpd 系统用户的环境变量
o*12014-04-12 07:0430 楼多谢指点!这个开始就试过了。system()跟``不同,不是把里面的命令的stdout输出,而是执行一下命令,再把exit status输出,所以返回的结果是0或者1。有点相似的还有exec(),这个干脆就光执行命令,什么也不返回。【在 f*****3 的大作中提到】: try this:: system('/path/code');
G*h2014-04-12 07:0431 楼有个简单的 env.cgi 之类的例子把 cgi 环境的所有变量都显示到网页上看的【在 o******1 的大作中提到】: 多谢指点!: 这个开始就试过了。system()跟``不同,不是把里面的命令的stdout输出,而是执行一: 下命令,再把exit status输出,所以返回的结果是0或者1。有点相似的还有exec(),: 这个干脆就光执行命令,什么也不返回。