×Ô¶¯»¯²âÊÔÖÐPythonÓëC/C++µÄ»ìºÏʹÓÃ
±³¾°
ÏîÄ¿µÄ
×Ô¶¯»¯²âÊÔÖÐÒѾʹÓÃÁË»ùÓÚPython
½Å±¾µÄ¿ò¼Ü£¬×Ô¶¯»¯¹ý³ÌÖÐ×î¹Ø¼üµÄÎÊÌâ¾ÍÊÇÈçºÎʵÏÖ׮ģ¿é¡£ÔËÓÃ
Python
Ç¿´óµÄ¹¦ÄÜ£¬ÊµÏÖÈκÎ׮ģ¿é¶¼ÊÇ¿ÉÄܵ쬵«ÊÇÊÇ·ñ±ØÐëÍêȫʹÓÃ
Python
ʵÏÖÄ£¿éÂß¼£¬³É±¾ÊÇÒ»¸ö¾ö¶¨ÐÔÒòËØ¡£ÔÚ׮ģ¿éÂß¼¼òµ¥µÄÇé¿öÏ£¬Ê¹ÓÃ
Python
Ä£ÄâÄ£¿éÂß¼²»µ«Ê¹×Ô¶¯»¯²âÊԵĽṹÇåÎú£¬Ò²¾ßÓиüºÃµÄÁé»îÐÔ£¬µ«ÊÇÈç¹û׮ģ¿éÂß¼¸´ÔÓ£¬ÊµÏÖÆðÀ´¿ÉÄÜÒªºÄ·ÑºÜ´óµÄ³É±¾£¬Ò²ÈÝÒ×ÓÉÓÚ׮ģ¿éÂß¼Óëʵ¼Ê²»·ûµ¼Ö²âÊÔ½á¹û²»¿ÉÐÅ¡£ÔÚÕâÖÖÇé¿öÏ£¬Èç¹ûÄܹ»½èÓÃ
RD
¿ª·¢µÄijЩ´úÂë¶Î
/
¿â£¬½«»á¶Ô²âÊÔ×Ô¶¯»¯´øÀ´ºÜ¶àÐ§Òæ¡£
ÁíÍ⣬ÔÚPython
Öе÷ÓÃ
C/C++
´úÂëµÄ·½·¨Ò²¿ÉÄÜÓ¦ÓÃÓÚ
C/C++
¿âµÄ²âÊÔÖУ¬ÕâÖÖ²âÊÔ·½·¨µÄ¿ÉÐÐÐÔ»¹ÓдýÑо¿¡£
ÒÔÏÂ×ܽá³ö¼¸ÖÖÔÚPython
Öе÷ÓÃ
C/C++
´úÂëµÄ·½·¨
ʹÓÃctypes
Ä£¿éµ÷ÓÃ
C
¶¯Ì¬¿â
´ÓPython2.5
¿ªÊ¼£¬
Python
¿ªÊ¼Ìṩ
ctypes
Ä£¿éÀ´Ìṩ¶Ô
C
ÓïÑÔ±àÒëµÄ¶¯Ì¬¿âÎļþµÄµ÷Óá£×¢Ò⣬
ÕâÀïÌØÖ¸C
µÄ¶¯Ì¬¿â
£¬ÓÃC++
±àÒëµÄ¶¯Ì¬¿â
ctypes
ËäÈ»Äܹ»¼ÓÔØ£¬µ«µ÷ÓÃʱµÄº¯ÊýÃûÒѾÓÉÓÚ
C++
µÄÖØÔØÌØÐÔ±»¼ÓÒÔÐ޸ģ¬ÄÑÒÔµ÷ÓᣠʹÓÃ
ctypes
µ÷ÓÃ
C
¶¯Ì¬¿âµÄºÃ´¦ÔÚÓÚ²»ÓýøÐжîÍâµÄ¿ª·¢£¬¿ÉÒÔÖ±½ÓʹÓñàÒëºÃµÄ¶¯Ì¬¿â¡£
ctypes
ÌṩÁËÍêÕûµÄ
C
ÀàÐÍ·â×°£¬Ò²Ö§³Ö×Ô¶¨ÒåÀàÐÍ£¬´ó´ó¼õÉÙÔÚµ÷Óùý³ÌÖеŤ×÷Á¿¡£
ctypes
µÄʹÓúܼòµ¥£¬Ö»ÐèÊìϤ
python
·â×°Óë
C
ÖеĶÔÓ¦¹ØÏµ¼´¿É¡£ÒÔÏÂÓÃÒ»¸ö¼òµ¥µÄÀý×ÓÀ´ËµÃ÷£º
from
ctypes
import
*
#µ¼ÈëctypesÄ£¿é
libc = cdll.LoadLibrary("libc.so.6")
#¼ÓÔØlibc¶¯Ì¬¿â
str
= c_char_p('
Hello World!
')
#ʹÓÃchar *ÔÚctypesÖеĶÔÓ¦·â×°c_char_p£¬Ï൱ÓÚchar* str=”Hello World!”
libc.printf(“yell: %s\n”,
str
)
#µ÷ÓÃprintfº¯Êý
ctypesµÄ¹¦Äܵ±È»Ô¶²»Ö¹ÕâЩ£¬ÓÐÐËȤµÄͬѧ¿ÉÒԲο¼ÕâÀï
http://docs.python.org/library/ctypes.html
ʹÓÃPython
µÄÀ©Õ¹£¨
Extending
£©»úÖÆ
ctypesºÜ·½±ãµØ¿ÉÒÔµ÷ÓÃ
C
µÄ¶¯Ì¬¿â£¬µ«ÊǶÔ
C++
±àÒëµÄ¶¯Ì¬¿â£¬µ÷ÓÃÆðÀ´ºÜÀ§ÄÑ¡£ÕâÖÖÇé¿öÀûÓÃ
Python
µÄ
Extending
»úÖÆ¾Í¿ÉÒÔ½â¾ö¡£
Python
ÌṩÁËÒ»Ì×ÍêÕûµÄ¿ò¼ÜÀ´Ê¹ÓÃ
C/C++
±àдÀ©Õ¹¿â£¬¿ÉÒÔºÜÁé»îµÄ¿ª·¢
C++
À©Õ¹Ä£¿é¡£ÕâÖÖ·½·¨µÄ
Ïà¹ØÎĵµ£º
À´Ô´:
×÷Õß:
Áé½£
1.python ×Ö·û´®Í¨³£Óе¥ÒýºÅ£¨'...'£©¡¢Ë«ÒýºÅ£¨...£©¡¢ÈýÒýºÅ£¨...£©»ò£¨'''...'''£©°üΧ£¬ÈýÒýºÅ°üº¬µÄ×Ö·û´®¿ÉÓɶàÐÐ×é³É£¬Ò»°ã¿É±íʾ´ó¶ÎµÄÐðÊöÐÔ×Ö·û´®¡£ÔÚʹÓÃʱ»ù±¾Ã»Óвî±ð£¬
1.python
×Ö·û´®Í¨³£Óе¥ÒýºÅ£¨'...'£©¡¢Ë«ÒýºÅ£¨"..."£©¡¢ÈýÒýºÅ£¨"""... ......
½ñÌìÔÚдµ½ÓÃcÀ´½âÎöpostÊý¾ÝµÄʱºòÐèÒªÓõ½Ò»¸öÊý×é±äÁ¿À´·ÅpostµÄËùÓÐÊý¾ÝµÈ×ÅÀ´½âÎö£¬²»ÏëÌ«ÀË·ÑÄÚ´æÁË¡£ÓÚÊÇÏë×ÅÏÈÉêÇëÒ»¸ö×î´óÍþ¶ûŶcontent_length´óСµÄÊý×éÔÙ˵¡£µ«ÊDz»ÔÊÐíÓñäÁ¿À´¡£±ÈÈç
int length = atoi(getenv("CONTENT_LENGTH"));
char params[length];
memset(params, '\0', length);
ÄÇôchar para ......
GCC Ö§³ÖÁËÐí¶à²»Í¬µÄÓïÑÔ£¬°üÀ¨ C¡¢C++¡¢Ada¡¢Fortran¡¢Objective C,Perl¡¢Python ºÍ Ruby£¬ÉõÖÁ»¹ÓÐJava¡£
¡¡¡¡Linux Äں˺ÍÐí¶àÆäËû×ÔÓÉÈí¼þÒÔ¼°¿ª·ÅÔ´ÂëÓ¦ÓóÌÐò¶¼ÊÇÓà C ÓïÑÔ±àд²¢Ê¹Óà GCC ±àÒëµÄ¡£
¡¡¡¡±àÒëC++³ÌÐò£º
¡¡¡¡-c Ö»±àÒë²»Á¬½Ó
¡¡¡¡g++ file1 -c -o file1.o
¡¡¡¡g++ file2 -c -o file2.o
¡¡¡¡g++ f ......
Ò»¡¢»ñÈ¡ÈÕÀúʱ¼ä
time_tÊǶ¨ÒåÔÚtime.hÖеÄÒ»¸öÀàÐÍ£¬±íʾһ¸öÈÕÀúʱ¼ä£¬Ò²¾ÍÊÇ´Ó1970Äê1ÔÂ1ÈÕ0ʱ0·Ö0Ãëµ½´ËʱµÄÃëÊý£¬ÔÐÍÊÇ£º
typedef long time_t; /* time value */
¿ÉÒÔ¿´³ötime_tÆäʵÊÇÒ»¸ö³¤ÕûÐÍ£¬ÓÉÓÚ³¤ÕûÐÍÄܱíʾµÄÊýÖµÓÐÏÞ£¬Òò´ËËüÄܱíʾµÄ×î³Ùʱ¼äÊÇ2038Äê ......
Öð²½Ñݽø
f=open('/etc/motd','r')
longest=0
while True:
lineLen=len(f.readline().strip())
if not lineLen: break
if lineLen > longest:
longest=lineLen
f.close()
return longest
ÎÊÌâ£ºÒ»Ö±Õ¼Ó ......