请问unix平台下有没有解释器可以解释unix可执行文件?

时间:2022-11-05 17:11:11
请问unix平台下有没有解释器可以解释unix可执行文件?

hello.c 文件内容
------------------------------
#include <stdio.h>

int main()
{
printf( "hello\n" );

return 0;
}
------------------------------

$ cc hello.c -o hello.out
$ 解释器程序xxx hello.out
hello

11 个解决方案

#1


为什么要解释unix可执行文件,是要调试程序吗?

#2


编译出来的不就是个可执行的二进制文件吗,又不是脚本,为什么要解释?

#3


我提出这个问题的缘由是这样的 

web开发上,流行的是用jsp、php、asp解释性语言,解释性语言的缺点是脚本解释速度较慢,由于原理是用该语言的解释器调入程序源代码文件解释运行,所以不存在一个进程创建、销毁过程 
而用c语言做web开发,因为是直接在硬件层上直接执行,所以处理速度很快,但存在进程的创建(fork)、销毁过程,频繁的创建、销毁进程使服务器难以承受其压力 
那么可不可以这样,集合上面两种开发方式的优点,设计一个具体操作系统上的可执行文件解释器,把可执行文件调入解释运行,就没有进程创建(fork)、销毁过程,而且由于解释的是机器代码,所以要比脚本语言少一个脚本词法、语法处理过程,速度上达到最快 
以上想法大家有什么看法? 

(用c开发cgi网上推荐使用FastCGI可以避免fork通过一个while循环使进程变成长生存期进程,但不是很好用,我配了好几天还搞不定,可能我的周边环境比较复杂,支持PostgreSQL的嵌入式开发方式,还有我自己的一个CGI函数库)(使用FastCGI必须把所有代码里的包含stdio.h都改成fcgi_stdio.h)

#4


system("exefile") ; // 进程替换 (PHP中类似)

#5


是不是这个意思 ?

#6


java哦 介于c和脚本语言之间 php也行

#7


如果一个二进制文件作为进程的一部分被load进来(没有fork过程),那不是很容易就访问宿主进程的数据,然后所有东西都被这个东西控制了。
你说的这个东西应该像模拟器一样,但是模拟器介入程序运行的开销绝对是比进程的创建什么的大。
我觉得应该是不可能的。
system("exefile")一样是创建了一个进程。

#8


1、从直接启动一个你编译的程序,变成启动一个解释器然后又这个解释器执行你的程序
2、UNIX(尤其是 Linux 之后)的进程在设计时就特别设计成相对轻量级的,因此 fork 造成的压力会相对较小
3、可以改写多进程程序为多线程程序,进一步避免 fork 造成的开销问题


但是,在做这些事情之前,拜托你认真研究一下性能瓶颈是不是在这个地方。

#9


1、从直接启动一个你编译的程序,变成启动一个解释器然后又这个解释器执行你的程序
2、UNIX(尤其是 Linux 之后)的进程在设计时就特别设计成相对轻量级的,因此 fork 造成的压力会相对较小
3、可以改写多进程程序为多线程程序,进一步避免 fork 造成的开销问题


但是,在做这些事情之前,拜托你认真研究一下性能瓶颈是不是在这个地方。

#10


算了,我已经配好FastCGI了,不需要解释可只执行代码了,呵呵~

#11


操作系统没学好,没什么说的

#1


为什么要解释unix可执行文件,是要调试程序吗?

#2


编译出来的不就是个可执行的二进制文件吗,又不是脚本,为什么要解释?

#3


我提出这个问题的缘由是这样的 

web开发上,流行的是用jsp、php、asp解释性语言,解释性语言的缺点是脚本解释速度较慢,由于原理是用该语言的解释器调入程序源代码文件解释运行,所以不存在一个进程创建、销毁过程 
而用c语言做web开发,因为是直接在硬件层上直接执行,所以处理速度很快,但存在进程的创建(fork)、销毁过程,频繁的创建、销毁进程使服务器难以承受其压力 
那么可不可以这样,集合上面两种开发方式的优点,设计一个具体操作系统上的可执行文件解释器,把可执行文件调入解释运行,就没有进程创建(fork)、销毁过程,而且由于解释的是机器代码,所以要比脚本语言少一个脚本词法、语法处理过程,速度上达到最快 
以上想法大家有什么看法? 

(用c开发cgi网上推荐使用FastCGI可以避免fork通过一个while循环使进程变成长生存期进程,但不是很好用,我配了好几天还搞不定,可能我的周边环境比较复杂,支持PostgreSQL的嵌入式开发方式,还有我自己的一个CGI函数库)(使用FastCGI必须把所有代码里的包含stdio.h都改成fcgi_stdio.h)

#4


system("exefile") ; // 进程替换 (PHP中类似)

#5


是不是这个意思 ?

#6


java哦 介于c和脚本语言之间 php也行

#7


如果一个二进制文件作为进程的一部分被load进来(没有fork过程),那不是很容易就访问宿主进程的数据,然后所有东西都被这个东西控制了。
你说的这个东西应该像模拟器一样,但是模拟器介入程序运行的开销绝对是比进程的创建什么的大。
我觉得应该是不可能的。
system("exefile")一样是创建了一个进程。

#8


1、从直接启动一个你编译的程序,变成启动一个解释器然后又这个解释器执行你的程序
2、UNIX(尤其是 Linux 之后)的进程在设计时就特别设计成相对轻量级的,因此 fork 造成的压力会相对较小
3、可以改写多进程程序为多线程程序,进一步避免 fork 造成的开销问题


但是,在做这些事情之前,拜托你认真研究一下性能瓶颈是不是在这个地方。

#9


1、从直接启动一个你编译的程序,变成启动一个解释器然后又这个解释器执行你的程序
2、UNIX(尤其是 Linux 之后)的进程在设计时就特别设计成相对轻量级的,因此 fork 造成的压力会相对较小
3、可以改写多进程程序为多线程程序,进一步避免 fork 造成的开销问题


但是,在做这些事情之前,拜托你认真研究一下性能瓶颈是不是在这个地方。

#10


算了,我已经配好FastCGI了,不需要解释可只执行代码了,呵呵~

#11


操作系统没学好,没什么说的