Linux ÉÏʵÏÖË«Ïò½ø³Ì¼äͨÐŹܵÀ(ת)
ÎÊÌâºÍ³£¼û·½·¨
Linux ÌṩÁË popen ºÍ pclose º¯Êý (1)£¬ÓÃÓÚ´´½¨ºÍ¹Ø±Õ¹ÜµÀÓëÁíÍâÒ»¸ö½ø³Ì½øÐÐͨÐÅ¡£Æä½Ó¿ÚÈçÏ£º
FILE *popen(const char *command£¬ const char *mode);
int pclose(FILE *stream);
Òź¶µÄÊÇ£¬popen ´´½¨µÄ¹ÜµÀÖ»ÄÜÊǵ¥ÏòµÄ -- mode Ö»ÄÜÊÇ "r" »ò "w" ¶ø²»ÄÜÊÇijÖÖ×éºÏ--Óû§Ö»ÄÜÑ¡ÔñҪôÍùÀïд£¬ÒªÃ´´ÓÖжÁ£¬¶ø²»ÄÜͬʱÔÚÒ»¸ö¹ÜµÀÖнøÐжÁд¡£Êµ¼ÊÓ¦ÓÃÖУ¬¾³£»áÓÐͬʱ½øÐжÁдµÄÒªÇ󣬱ÈÈ磬ÎÒÃÇ¿ÉÄÜÏ£Íû°ÑÎı¾Êý¾ÝËÍÍùsort¹¤¾ßÅÅÐòºóÔÙÈ¡»Ø½á¹û¡£´Ëʱpopen¾ÍÎÞ·¨ÓÃÉÏÁË¡£ÎÒÃÇÐèҪѰÕÒÆäËüµÄ½â¾ö·½°¸¡£
ÓÐÒ»ÖÖ½â¾ö·½°¸ÊÇʹÓà pipe º¯Êý (2)´´½¨Á½¸öµ¥Ïò¹ÜµÀ¡£Ã»ÓдíÎó¼ì²âµÄ´úÂëʾÒâÈçÏ£º
int pipe_in[2], pipe_out[2];
pid_t pid;
pipe(&pipe_in); // ´´½¨¸¸½ø³ÌÖÐÓÃÓÚ¶ÁÈ¡Êý¾ÝµÄ¹ÜµÀ
pipe(&pipe_out); // ´´½¨¸¸½ø³ÌÖÐÓÃÓÚдÈëÊý¾ÝµÄ¹ÜµÀ
if ( (pid = fork()) == 0) { // ×Ó½ø³Ì
close(pipe_in[0]); // ¹Ø±Õ¸¸½ø³ÌµÄ¶Á¹ÜµÀµÄ×Ó½ø³Ì¶Á¶Ë
close(pipe_out[1]); // ¹Ø±Õ¸¸½ø³ÌµÄд¹ÜµÀµÄ×Ó½ø³Ìд¶Ë
dup2(pipe_in[1], STDOUT_FILENO); // ¸´ÖƸ¸½ø³ÌµÄ¶Á¹ÜµÀµ½×Ó½ø³ÌµÄ±ê×¼Êä³ö
dup2(pipe_out[0], STDIN_FILENO); // ¸´ÖƸ¸½ø³ÌµÄд¹ÜµÀµ½×Ó½ø³ÌµÄ±ê×¼ÊäÈë
close(pipe_in[1]); // ¹Ø±ÕÒѸ´ÖƵĶÁ¹ÜµÀ
close(pipe_out[0]); // ¹Ø±ÕÒѸ´ÖƵÄд¹ÜµÀ
/* ʹÓÃexecÖ´ÐÐÃüÁî */
} else { // ¸¸½ø³Ì
close(pipe_in[1]); // ¹Ø±Õ¶Á¹ÜµÀµÄд¶Ë
close(pipe_out[0]); // ¹Ø±Õд¹ÜµÀµÄ¶Á¶Ë
/* ÏÖÔÚ¿ÉÏòpipe_out[1]ÖÐдÊý¾Ý£¬²¢´Ópipe_in[0]ÖжÁ½á¹û */
close(pipe_out[1]); // ¹Ø±Õд¹ÜµÀ
/* ¶ÁÈ¡pipe_in[0]ÖеÄÊ£ÓàÊý¾Ý */
close(pipe_in[0]); // ¹Ø±Õ¶Á¹ÜµÀ
/* ʹÓÃwaitϵÁк¯ÊýµÈ´ý×Ó½ø³ÌÍ˳ö²¢È¡µÃÍ˳ö´úÂë */
}
µ±È»£¬ÕâÑùµÄ´úÂëµÄ¿É¶ÁÐÔ£¨ÌرðÊǼÓÉÏ´íÎó´¦Àí´úÂëÖ®ºó£©±È½Ï²î£¬Ò²²»ÈÝÒ×·â×°³ÉÀàËÆÓÚpopen/pcloseµÄº¯Êý£¬·½±ã¸ß²ã´úÂëʹÓ᣾¿ÆäÔÒò£¬ÊÇpipeº¯Êý·µ»ØµÄÒ»¶ÔÎļþÃèÊö·ûÖ»ÄÜ´ÓµÚÒ»¸öÖжÁ¡¢µÚ¶þ¸öÖÐд£¨ÖÁÉÙ¶ÔÓÚLinuxÊÇÈç´Ë£©¡£ÎªÁËͬʱ¶Áд£¬¾ÍÖ»ÄܲÉÈ¡ÕâôÀÛ׸µÄÁ½¸öpipeµ÷Óá¢Á½¸öÎļþÃèÊö·ûµÄÐÎʽÁË¡£
»ØÒ³Ê×
Ò»¸ö¸üºÃµÄ·½°¸
ʹÓÃpipe¾ÍÖ»ÄÜÈç´ËÁË¡£²»¹ý£¬LinuxʵÏÖÁËÒ»¸öÔ´×ÔBSDµÄsocketpairµ÷Óà (3)£¬¿ÉÒÔʵÏÖÉÏÊöÔÚͬһ¸öÎļþÃèÊö·ûÖнøÐжÁдµÄ¹¦ÄÜ£¨¸Ãµ÷ÓÃĿǰҲÊÇPOSIX¹æ·¶µÄÒ»²¿·Ö (4)£©¡£¸Ãϵͳµ÷ÓÃÄÜ´´½¨Ò»¶Ô
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
¹éÄÉÒ»ÏÂlinuxÏ¿ª·¢µÄautomakeÏà¹ØµÄ£¬Ã»ÓÐʱ¼äдֻºÃ×ªÔØÒ»Ð©ºÃµÄÁË
±¾ÎÄ×ªÔØÓÚ£º http://xunet.blog.51cto.com/138167/22019
ʹÓÃAutomake,AutoconfÉú³ÉMakefile
ÔÚUnixÉÏд¹ý³ÌÐòµÄÈËÓÈÆäÊÇÓà C À´¿ª·¢³ÌÐòµÄÈËÒ»°ã¶¼Óöµ½¹ý Makefile£¬Óà make
À´¿ª·¢ºÍ± ......
[±à¼ÖÐ]
-m32
# ld -V
GNU ld version 2.15.92.0.2 20040927
Supported emulations:
elf_x86_64
elf_i386
i386linux
#ld -m elf_i386
Along with the -m32 flag in gcc, you may need to include the -melf_i386 flag for ld to properly link the 32bi ......
ѧϰ±ðÈ˵ģ¬¼Ç¼×Ô¼ºµÄ¡£
1¡¢sysinfoÓ÷¨
#include <sys/sysinfo.h>
int sysinfo(struct sysinfo info);
¼Ç¼ÁËlinuxÖÐÆô¶¯Ê±¼ä¡¢ÄÚ´æÐÅÏ¢¡¢½»»»·ÖÇø¡¢cpu¸ºÔصÈÐÅÏ¢¡£
³É¹¦·µ»Ø0£¬Ê§°Ü·µ»Ø-1
struct sysinfo {
long uptime;   ......
µ±ÎÒÃÇÏëÐ¶ÔØhttpd µÄʱºò£¬Ê¹ÓÃrpm -qa httpd µÄʱºò£¬ÎÒÃÇ·¢ÏÖÓкܶàµÄÒÀÀµ°ü¡£ÎÒÃÇÄÍÐĵÄÏëÒ»¸öÒ»¸öµÄÐ¶ÔØµÄʱºò£¨Ê¹ÓÃrpm -e httpd-*£©£¬»¹»á½øÈëËÀÑ»·¡£
½â¾öµÄ°ì·¨ÊÇ£ºÊ¹Óà rpm -e httpd-* --nodeps˵Ã÷£º¡°*¡±ÊÇͨÅä·û¡£
°²×°CentOS5.3µÄʱºò»áĬÈϰ²×°httpd·þÎñ¡£
Ê×ÏȲ鿴 ......