ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

¡¶Linux³ÌÐòÉè¼Æ¡·¡ª¡ªÎļþ²Ù×÷Ö®µ×²ãº¯Êýµ÷ÓÃ
2014-11-24 08:20:27 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:0´Î
Tags£ºLinux ³ÌÐòÉè¼Æ Îļþ ²Ù×÷ µ×²ã º¯Êý µ÷ÓÃ

¡¶Linux³ÌÐòÉè¼Æ¡·Ò»ÊéµÄµÚÈýÕÂÊǽ²ÓйØÎļþ²Ù×÷µÄº¯Êý¼°ÆäÓ÷¨µÄ£¬ÆäÖеÚÒ»½Ú½²µÄÊǵײ㺯Êýµ÷ÓÃwrite,read,open,close,itocl¡£ÆäÖУ¬openº¯Êý±»¶¨ÒåÔÚÍ·Îļþfcntl.hÖУ¨Èç¹ûϵͳ²»·ûºÏPOSIX¹æ·¶µÄ»°£¬ÓпÉÄÜÔÚʹÓÃʱ»¹Òª°üº¬Í·Îļþsys/types.hºÍsys/stat.h£©£»ÁíÍâËĸöº¯ÊýÔò±»¶¨ÒåÔÚÍ·Îļþunistd.hÖС£µ±È»ÁË£¬ÕâÊÇÕâ±¾ÊéÉÏËù˵µÄÄÚÈÝ¡£


µ«ÊÇÎÒ´ò¿ªÕâ¸öÍ·Îļþºó£¬¿´µ½µÄÊÇÕâ¸ö


(unistd.h:/usr/include/linux/unistd.h)
#ifndef _LINUX_UNISTD_H_
#define _LINUX_UNISTD_H_


/*Include machine specific syscall numbers*/


#include


#endif /* _LINUX_UNISTD_H_ */


¾ÍÊÇ˵£¬Æäʵwrite,read,close,iotclÕ⼸¸öº¯ÊýÊǶ¨ÒåÔÚÍ·Îļþasm/unistd.hÖеģ¬¿ÉϧÎÒÕÒÁËÒ»´óȦҲûÓÐÕÒµ½¡£ºÃÁË£¬À´¿´¿´Õ⼸¸öº¯Êý°É¡£
1.writeº¯Êý£º
size_t write(int fildes, const void *buf, size_t nbytes);


LinuxÏÂÔÚxtermÀïʹÓÿÉÒÔʹÓà man 2 writeÀ´²é¿´writeº¯ÊýµÄ¡¢Ó÷¨µÈϸ½Ú¡£
writeº¯ÊýÓÐÈý¸ö²ÎÊý£¬µÚÒ»¸ö²ÎÊýΪintÀàÐ͵Äfildes£¬Ö¸µÄÊÇÎļþÃèÊö·û£¬Ä¿Ç°ÎÒÖªµÀµÄÎļþÃèÊö·ûÓÐÈý¸ö£º0£¬´ú±í±ê×¼ÊäÈ룻1£¬´ú±í±ê×¼Êä³ö£»2´ú±í±ê×¼´íÎó¡£µÚ¶þ¸ö²ÎÊýÊÇÒ»¸öÎÞÀàÐ͵ÄconstÖ¸Õ룬ָÏòÒªÏòÖ¸¶¨Îļþ£¨Êä³öÁ÷ºÍ´íÎóÁ÷Ò²ÊÇÒ»¸öÎļþ£©Êä³öµÄÄÚÈÝ¡£µÚÈý¸ö²ÎÊýÔòÊÇÒ»¸ösize_tÀàÐ͵ÄÖµ£¬±íʾҪ´ÓbufÖжÁÈ¡µÄ³¤¶È¡£¶øwriteº¯ÊýµÄ·µ»ØÖµÔòÊÇָʵ¼ÊдÈëµ½Ö¸¶¨ÎļþÖеij¤¶È¡£¿´ÏÂÃæÕâ¸ö³ÌÐò£º


#include
#include


int main() {
if ((write(1, "Here is some date\n", 18)) != 18)
write(2, "A error has occured on file descriptior 1\n", 42);
exit(0);
}
±àÒëºóÔÚÖÕ¶ËÖÐÔËÐУ¬ÔËÐнá¹ûÊÇÊä³ö£¨¼´½«ÄÚÈÝдÈëµ½±ê×¼Êä³öÁ÷ÖУ©ÁË"Here is some date"¡£Èç¹ûÉÔ΢¸Ä±äÒ»ÏÂwriteµÄʵ²ÎÖµ£¬»áÔõôÑùÄØ£¿
½«µÚÒ»¸öwriteº¯ÊýµÄµÚÈý¸ö²ÎÊý¸ÄΪ17£¬ÔËÐнá¹ûÈçÏ£º
Here is some dataA error has occured on file descriptior 1
×ÅÊÇÒòΪ"Here is some data\n"µÄ³¤¶ÈÊÇ18£¨\nËãÒ»¸ö×Ö·û£©£¬ÔÚµÚÈý¸ö²ÎÊýµÄָСÓÚbufʵ¼Ê³¤¶ÈµÄʱºò£¬write½«°´ÕÕnbytesµÄָʾ£¬Ö»½²bufÄڵIJ¿·ÖÄÚÈÝдÈëµ½ÎļþÃèÊö·û´ú±íµÄÎļþÖÐÈ¥¡£ÄÇô£¬µ±nbytesµÄÖµ´óÓÚbufµÄʵ¼Ê³¤¶Èʱ£¬»áÔõôÑùÄØ£¿
½«18¸ÄΪ20£¬ÔÚÖÕ¶ËÖÐÔËÐеĽá¹ûΪ£º
Here is some data
A error has occured on file descriptior 1
Õâ˵Ã÷writeÔÚbuf¶ÁÈ¡×Ö·ûʱ£¬»áÔÚ¶Àµ½\0ºóÖÕÖ¹¶ÁÈ¡ÐÐΪ¡£µ«ÊÇÕâÑùÒÔÀ´£¬ÓÖÓÐÁËÒ»¸öеÄÎÊÌ⣬ÄǾÍÊÇ£¬writeº¯ÊýµÄ·µ»ØÖµÄѵÀÊÇÓɵÚÈý¸ö²ÎÊýÀ´¾ö¶¨µÄô£¿ÊÂʵÉÏ£¬Èç¹û½«³ÌÐò¸ÄΪÕâ¸öÑù×Ó£º
#include


int main() {
int nb;
nb = (int)write(1, "Here is some\n", 18);
if (nb != 18)
write(2, "A error has occured on file descriptior 1\n", 42);
printf("\nThe value returned by the function write is %d\n", nb);
exit(0);
}
±àÒëÔËÐкóµÄ½á¹ûΪ£º
Here is some
A
The value returned by function write is 18
ÕâÖÖ½á¹ûÕæÊÇÈÃÈ˰Ù˼²»µÃÆä½â¡­¡­Èç¹û˵writeº¯ÊýµÄ·µ»ØÖµÊÇÓɵÚÈý¸ö²ÎÊý¾ö¶¨ÓÐЩ¹îÒ죬ÆðÂëÎÒ»¹¿ÉÒÔ½ÓÊÜ£¬µ«ÊǵڶþÐеÄAÊÇÔõô»ØÊ£¿Õâ¸öAÃ÷ÏÔÊÇifÓï¾ä¿éÀïµÄÄǸöwriteº¯ÊýµÄ½á¹û¡£Èç¹ûnbµÄֵȷʵÊÇ18£¬ÄÇô°´ÀíÀ´Ëµ£¬ifÓï¾ä¾Í²»»áÖ´ÐУ¬¾Í²»»áÓÐÕâ¸öA£»Èç¹ûnbµÄÖµ²»ÊÇ18£¬ÄÇô°´ÀíµÚ¶þÐÐÓ¦¸ÃÊä³ö£ºA error has occured on file descriptior 1\n¡£ÊÂʵÉÏ£¬µ±µÚÈý¸ö²ÎÊýµÄÖµ´óÓÚµÚ¶þ¸ö²ÎÊý×Ö·û´®µÄ³¤¶Èʱ£¬»á³öÏÖ¸÷ÖֹŹֵÄÊä³ö¡£(ºÃ°É£¬Õâ¸öµØ·½ÎÒ¾À½áÁË£¬²»¹ý¾­¹ýÕâ¸ö¹ý³Ì£¬¿ÉÒÔ˵¶Ôwriteº¯ÊýÓÐÁ˱ȽÏÉîÈëµÄÁ˽⣬¾ÍÊÇÏÖÔÚgdb»¹²»ÊǺÜÊìϤ£¬ËùÒÔÕâ¸öÎÊÌâÔÝʱÏÈ·Åϰɣ¬µÈ°ÑgdbµÄʹÓö¼ÊìϤÁË£¬¾Í×ÐϸµØµ÷ÊÔһϣ¬ÕÒÕÒÎÊÌâ°É£¬ÁíÍâÄǸöÍ·Îļþasm/unistd.hÒ²ÕÒÒ»ÕÒ°É£©


¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºLinuxϵÄShellÓïÑÔ±à³ÌÈëÃÅ ÏÂһƪ£ºU-boot 201103rc1ÔÚs3c2440ÉϵÄÒÆ..

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Spring Boot Java£º (2025-12-26 16:20:19)
¡¤Spring Boot¤ÇHello (2025-12-26 16:20:15)
¡¤Spring ¤Î»ù±¾¤«¤éŒ (2025-12-26 16:20:12)
¡¤C++Ä£°å (template) (2025-12-26 15:49:49)
¡¤C ÓïÑÔÖÐÄ£°åµÄ¼¸ÖÖ (2025-12-26 15:49:47)