banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix `read` là Function hay là command trong Linux?  XML
  [Question]   `read` là Function hay là command trong Linux? 18/02/2012 00:07:19 (+0700) | #1 | 254310
[Avatar]
F10
Member

[Minus]    0    [Plus]
Joined: 01/12/2008 23:38:12
Messages: 89
Offline
[Profile] [PM]
Chào các bạn!
Theo mình biết để biết đường dẫn tuyệt đối của một câu lệnh trong linux. mà câu lệnh đó nằm trong $PATH thì dùng which để hiện thị ví dụ:
Code:
#which ifconfig

và hiện ra là /sbin/ifconfig nghĩa là ifconfig nằm ở /sbin/ifconfig tuy nhiên câu lệnh read trong linux thì lại khác. khi mình tìm đường dẫn tuyệt đối của nó thì không thấy.
Code:
#which read
/usr/bin/which: no read in (/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

mặc dù mình vẫn gõ read bình thường mà không cần phải chỉ ra đường dẫn tuyệt đối. Điều này dẫn tới phán đoán của mình là read là một function inline của Linux, location chứa nó là memory. Nghĩa là nó được load vào trong bộ nhớ sẵn từ khi hệ thống được boot.
Phán đoán của mình có đúng không? và để tạo các function kiểu như read thì mình phải làm thế nào? Có ví dụ minh hoạ bằng C thì rất tốt. Cảm ơn các bạn.
[Up] [Print Copy]
  [Question]   Read là Function hay là command trong Linux? 18/02/2012 00:22:33 (+0700) | #2 | 254312
[Avatar]
secmask
Elite Member

[Minus]    0    [Plus]
Joined: 29/10/2004 13:52:24
Messages: 553
Location: graveyard
Offline
[Profile] [PM] [WWW]
đọc "man read" thì bạn sẽ thấy đây là shell buit-in command.
[Up] [Print Copy]
  [Question]   Read là Function hay là command trong Linux? 18/02/2012 00:26:00 (+0700) | #3 | 254313
[Avatar]
chiro8x
Member

[Minus]    0    [Plus]
Joined: 26/09/2010 00:38:37
Messages: 661
Location: /home/chiro8x
Offline
[Profile] [PM] [Yahoo!]

secmask wrote:
đọc "man read" thì bạn sẽ thấy đây là shell buit-in command.
 

Vấn đề đó thì bạn ấy rõ rồi ! nhưng cái khó ở đây là bạn ấy muốn viết một chương trình C/C++ để truyền tham số cho bash script.
while(1){}
[Up] [Print Copy]
  [Question]   Read là Function hay là command trong Linux? 18/02/2012 00:41:48 (+0700) | #4 | 254315
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

F10 wrote:

...
tuy nhiên câu lệnh read trong linux thì lại khác. khi mình tìm đường dẫn tuyệt đối của nó thì không thấy.
Code:
#which read
/usr/bin/which: no read in (/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

mặc dù mình vẫn gõ read bình thường mà không cần phải chỉ ra đường dẫn tuyệt đối. Điều này dẫn tới phán đoán của mình là read là một function inline của Linux, location chứa nó là memory. Nghĩa là nó được load vào trong bộ nhớ sẵn từ khi hệ thống được boot.
Phán đoán của mình có đúng không?
 

Về mặt ý tưởng có thể bạn phán đoán đúng nhưng diễn đạt chưa chuẩn. `read` là một shell builtin command:
Code:
$ type read
read is a shell builtin

$ type ifconfig
ifconfig is /sbin/ifconfig

tương tự như `cd`, `echo`, ...

Một shell builtin command sẽ được chạy trong chính bản thân shell's process, khác với external command sẽ được shell 'fork' ra một process mới để chạy.

Để xem thông tin về builtin commands, người ta dùng `help`, ví dụ:
Code:
$ help help
help: help [-dms] [pattern ...]
    Display information about builtin commands.

F10 wrote:

và để tạo các function kiểu như read thì mình phải làm thế nào? Có ví dụ minh hoạ bằng C thì rất tốt. Cảm ơn các bạn. 

Đọc code của Bash: http://ftp.gnu.org/gnu/bash/
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Read là Function hay là command trong Linux? 18/02/2012 00:51:14 (+0700) | #5 | 254316
[Avatar]
chiro8x
Member

[Minus]    0    [Plus]
Joined: 26/09/2010 00:38:37
Messages: 661
Location: /home/chiro8x
Offline
[Profile] [PM] [Yahoo!]
Vậy nên đọc bash hay nên đọc read được build trong kernel smilie. Hay tốt nhất ta đọc cả 2 smilie
while(1){}
[Up] [Print Copy]
  [Question]   Read là Function hay là command trong Linux? 18/02/2012 00:52:56 (+0700) | #6 | 254317
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

chiro8x wrote:
Vậy nên đọc bash hay nên đọc read được build trong kernel smilie. Hay tốt nhất ta đọc cả 2 smilie 

"read được build trong kernel" là sao?
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Read là Function hay là command trong Linux? 18/02/2012 07:20:49 (+0700) | #7 | 254327
[Avatar]
F10
Member

[Minus]    0    [Plus]
Joined: 01/12/2008 23:38:12
Messages: 89
Offline
[Profile] [PM]
Thask các bạn mình đã hiểu vấn đề và đã có hướng giải quyết!.. smilie
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|