Redian新闻
>
perl cgi中调用C可执行程序为什么在html中不显示?
avatar
perl cgi中调用C可执行程序为什么在html中不显示?# Linux - Linux 操作系统
b*3
1
医生劝说不要这个小孩了,可是35周了,大家都舍不得,他昨天又去301医院问,
说国内的技术不成熟,美国这个对这个病,有好的办法吗?多谢!
avatar
k*s
2
是一个月某个long weekend用一次。还是平时不用,一下take 1 week or 2 weeks off?
我觉得可以每一个long weekend用一天两天,这样就可以连歇4,5天。这样最后还能剩
下1个星期左右。
一般manager希望怎么样?
avatar
V*y
3
随意浏览网页,看到一则新闻。大致意思是一个男的抛弃了相濡以沫的妻子和儿子,和
自己的初恋女友结婚了。是什么让一个男人宁可顶着抛妻弃子的名声,也要和自己的初
恋女友在一起。从道德角度,我们会说这个男人不现实,人品有问题,他不应该抛弃自
己的妻儿去寻求什么初恋。可是他偏偏就是放不下心中的那一份美好的回忆,即使内心
受到道德谴责,良心的叩问,依然和他的初恋远走高飞。
很明显,他的老婆输在了“初恋”这两个字上面。可以说初恋是一个人的青春之中最美
好的回忆。由初恋到白头固然是最美好的状态,但是能拥有这种幸运之人实在太少。
初恋之所以美好,在于它的纯粹。在憧憬爱情的岁月里,有那么一个人可以牵动你所有
的视线,假装和别人聊天,眼神也会不由自主的往有她的地方偷偷瞟一眼。看到她和别
人聊天你会高兴,甚至她在发呆,你都会觉得特别可爱。一个人发呆,一个人对着镜子
傻笑。终于有一天你鼓足勇气去表白,多么幸运,她竟然和你有相同的感觉。于是你们
成为这个世界上最幸福的人。这种你喜欢我,而我也恰巧喜欢你的感情纯粹的让人感动
。初恋让人难以释怀,甚至像新闻中的男主人公那样,应该也不是那么不可饶恕。
或许,以后会因为种种原因导致你们不得不分开,开启一段新的人生。但是初恋的那份
感受,确是一生中再难拥有的悸动。或许未来的某一天,你会笑着说起小时候的事,但
是初恋,会是你用尽全力,也会把他珍藏到心底最柔软的那一块,陪着岁月一起沉淀出
一缕醇香。
avatar
o*1
4
我用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中?
多谢啦!
avatar
A*a
5
什么技术不成熟?

延髓池增宽,美国这边的医院,对这个病,有什么好的办法吗?

【在 b*******3 的大作中提到】
: 医生劝说不要这个小孩了,可是35周了,大家都舍不得,他昨天又去301医院问,
: 说国内的技术不成熟,美国这个对这个病,有好的办法吗?多谢!

avatar
C*a
6
4,5天跟3天区别不大啊,除非有特定出游计划.老板应该是希望员工们不要在活多的时候
修假吧.

off?

【在 k***s 的大作中提到】
: 是一个月某个long weekend用一次。还是平时不用,一下take 1 week or 2 weeks off?
: 我觉得可以每一个long weekend用一天两天,这样就可以连歇4,5天。这样最后还能剩
: 下1个星期左右。
: 一般manager希望怎么样?

avatar
o*1
7
上面说的太啰嗦了,我想了一下,其实问题就一句话:
如何把backticks中调用的自己写的C可执行程序的output返回到perl程序中?
大牛们指点一下吧!
avatar
b*3
8
治疗怀孕期的小孩小脑延髓池增宽,医生说国内这项技术不成熟,朋友让我问问这边的
情况看看,毕竟小孩都这么长时间了,大家都舍不得不要了
avatar
m*k
9
能用python就别用perl了。
python 里有 subprocess.Popen
per里可以 open FD "| c-prog"
avatar
P*J
10
别折腾了
小孩又没有生下来

【在 b*******3 的大作中提到】
: 医生劝说不要这个小孩了,可是35周了,大家都舍不得,他昨天又去301医院问,
: 说国内的技术不成熟,美国这个对这个病,有好的办法吗?多谢!

avatar
o*1
11
多谢提醒!
我试过了,命令里面的"|"应该是在"c-prog"之后吧。但是这也不行,还是不能把输出
返回给perl。

【在 m**k 的大作中提到】
: 能用python就别用perl了。
: python 里有 subprocess.Popen
: per里可以 open FD "| c-prog"

avatar
A*a
12
不是这方面的医生或专家,个人认为是发育上的异常,没有什么可以治疗的,即使在美
国也是诊断和排查。这种异常可能使新生儿以后出现发育迟缓或脑神经类疾病。风险有
多大,有多严重,没人知道。后果只能由当事人家庭自己承担,生活就是这么无情。

【在 b*******3 的大作中提到】
: 治疗怀孕期的小孩小脑延髓池增宽,医生说国内这项技术不成熟,朋友让我问问这边的
: 情况看看,毕竟小孩都这么长时间了,大家都舍不得不要了

avatar
G*h
13
$s = `c-prog`;
Print $s;
这行不?
avatar
t*n
14
异于平均本身不是病。就像你验个血经常都有一两项在参考值以外。
A. 医学上:先超声复查确认、再考虑有否其他异常,另外查染色体。
就这一项异常,出来有问题的几率不大
http://www.ncbi.nlm.nih.gov/pubmed/9360236
http://www.yxzs.chinajournal.net.cn/EditorB/WebPublication/paperDigest.aspx?paperID=YXZS201221059&isCnki=ck01
B. 医患关系:医生应说明可能出现哪些问题,概率多少,相比平均出生缺陷如何。你
朋友两口子也要认识到,像楼上说的,投胎有风险,决定靠自己。

【在 b*******3 的大作中提到】
: 医生劝说不要这个小孩了,可是35周了,大家都舍不得,他昨天又去301医院问,
: 说国内的技术不成熟,美国这个对这个病,有好的办法吗?多谢!

avatar
f*3
15
你的c 语言输出是到STDOUT吗?
试试这个看输出是到STDOUT,或STDERR:
perl code.pl 1> out.txt 2> err. txt
avatar
t*n
16
同意,这和技术完全无关。
打个比方:孕早期的颈后透明带扫描,偏厚说明唐氏风险性高,不是动手术把透明带切
薄能解决的。
朋友理解错了,还是医生不靠谱?

【在 A*****a 的大作中提到】
: 不是这方面的医生或专家,个人认为是发育上的异常,没有什么可以治疗的,即使在美
: 国也是诊断和排查。这种异常可能使新生儿以后出现发育迟缓或脑神经类疾病。风险有
: 多大,有多严重,没人知道。后果只能由当事人家庭自己承担,生活就是这么无情。

avatar
w*g
17
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的输

avatar
b*3
18
朋友不会理解错,他是学中医的,他们专门在山东省级医院和北京301医院去检查的
。他说只要生下来智力没有问题,其它的他都可以用中医给小孩调理,而中医对小孩智
力这块是空缺,这位朋友因为是中医,帮助过很多人,也办公益讲座关于保健的,小孩
都快出生了,都舍不得打掉,不知道这样的小孩子生下来后,对智力有多大影响?
avatar
o*1
19
多谢上面的大牛们的指点!费了一个晚上终于找出来毛病了。但是我还有个问题,大牛
们请继续帮忙。
1. 我的那个c的可执行文件是从oracle数据库里面retrieve东西,然后打印到stdout。
2. 我的问题其实不是C可执行文件的stdout没有返回到perl,而是C没有从数据库里面
retrieve到东西。所以先纠正一下之前我的错误,不管是用backticks,还是open
filehandle "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环
境变量全部输入进来?
谢谢啦!
avatar
t*n
20
按上述文献数据,再怀一胎而且产检一切正常的话,日后出现各种身心障碍的概率也差不
多。
目前产前能查的有限,自闭症、脑瘫什么的不可能排除。
要保证大脑100%正常,那只能收养一个四五岁以上的。。。

【在 b*******3 的大作中提到】
: 朋友不会理解错,他是学中医的,他们专门在山东省级医院和北京301医院去检查的
: 。他说只要生下来智力没有问题,其它的他都可以用中医给小孩调理,而中医对小孩智
: 力这块是空缺,这位朋友因为是中医,帮助过很多人,也办公益讲座关于保健的,小孩
: 都快出生了,都舍不得打掉,不知道这样的小孩子生下来后,对智力有多大影响?

avatar
f*3
21
shell 变量一般在 ~/.bash_profile.如果不是你可以自己建立个文件。
==
export LD_LIBRARY_PATH=...
...
==
把你的c 程序放在已shell script 里面。
===
#!/bin/bash
source /home_dir/.bash_profile
/home_dir/bin/c_prog
===
再用Perl调用。
avatar
b*3
22
不是这个意思,他们这是第二胎,我朋友本身是个中医,帮助过很多人,而中医在这方
面是空白,他也希望能知道这种情况下,生出来后,对小孩智力的影响,有没有支持数
据,他希望能帮助更多的人。
avatar
o*1
23
多谢指点!
不过下面的这个方法似乎也不行
===
#!/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",前一个显示了,后一个没有。
当然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

avatar
t*n
24
上面两个链接的文献不就是数据么
avatar
G*h
25
运行 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",前一个显示了,后一个没有。

avatar
o*1
26
运行cgi的就是我自己的一个perl文件。奇怪的是perl不认shell的环境变量。甚至做了
如feng443所建议的,用一个shell script做container来装C可执行程序,并且在这个
shell script中包括#!/bin/bash以及source用户配置文件也不行。我还试过,哪怕是
echo $HOME都不打印。
难道告诉perl程序环境变量,只有用$ENV{}这样的一个一个的手动载入?有没有更
elegant的办法啦?

【在 G*****h 的大作中提到】
: 运行 cgi 的那个系统用户跟你自己的用户不一样
avatar
f*3
27
try this:
system('/path/code');
avatar
G*h
28
文件是你的
运行这个文件的进程是 httpd 调用 perl
用的是 httpd 系统用户的环境变量

【在 o******1 的大作中提到】
: 运行cgi的就是我自己的一个perl文件。奇怪的是perl不认shell的环境变量。甚至做了
: 如feng443所建议的,用一个shell script做container来装C可执行程序,并且在这个
: shell script中包括#!/bin/bash以及source用户配置文件也不行。我还试过,哪怕是
: echo $HOME都不打印。
: 难道告诉perl程序环境变量,只有用$ENV{}这样的一个一个的手动载入?有没有更
: elegant的办法啦?

avatar
o*1
29
多谢指点!
我试着在那个shell script中echo几个apache2的环境变量,比如$APACHE_RUN_DIR和$
APACHE_RUN_GROUP,还是没有打印出来。
也许httpd的系统用户环境变量我没有找对。我是在/etc/apache2/envvars中找的。如
果不对,应该在哪个文件中?
谢谢啦!

【在 G*****h 的大作中提到】
: 文件是你的
: 运行这个文件的进程是 httpd 调用 perl
: 用的是 httpd 系统用户的环境变量

avatar
o*1
30
多谢指点!
这个开始就试过了。system()跟``不同,不是把里面的命令的stdout输出,而是执行一
下命令,再把exit status输出,所以返回的结果是0或者1。有点相似的还有exec(),
这个干脆就光执行命令,什么也不返回。

【在 f*****3 的大作中提到】
: try this:
: system('/path/code');

avatar
G*h
31
有个简单的 env.cgi 之类的例子
把 cgi 环境的所有变量都显示到网页上看的

【在 o******1 的大作中提到】
: 多谢指点!
: 这个开始就试过了。system()跟``不同,不是把里面的命令的stdout输出,而是执行一
: 下命令,再把exit status输出,所以返回的结果是0或者1。有点相似的还有exec(),
: 这个干脆就光执行命令,什么也不返回。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。