Next: , Previous: Shell Arguments, Up: Processes   [Contents][Index]


36.3 Ʊ´ü¥×¥í¥»¥¹¤ÎºîÀ®

Ʊ´ü¥×¥í¥»¥¹¡Êsynchronous process¡Ë¤òºîÀ®¤¹¤ë¤È¡¢ Emacs¤Ï¼Â¹Ô¤ò³¹Ô¤¹¤ë¤Þ¤¨¤Ë¤½¤Î¥×¥í¥»¥¹¤¬½ªÎ»¤¹¤ë¤Î¤òÂÔ¤Á¤Þ¤¹¡£ dired¤Ï¤½¤ÎÎã¤Ç¤¹¡£ ls¤òƱ´ü¥×¥í¥»¥¹¤Ç¼Â¹Ô¤·¡¢¤½¤Î½ÐÎϤò¾¯¡¹½¤Àµ¤·¤Þ¤¹¡£ ¥×¥í¥»¥¹¤ÏƱ´ü¤Ê¤Î¤Ç¡¢Emacs¤¬¤Ê¤Ë¤«¤ò¹Ô¤ª¤¦¤È¤¹¤ë¤Þ¤¨¤Ë ¥Ç¥£¥ì¥¯¥È¥ê°ìÍ÷Á´Éô¤¬¥Ð¥Ã¥Õ¥¡¤ËÆÏ¤­¤Þ¤¹¡£

Emacs¤ÏƱ´ü¥µ¥Ö¥×¥í¥»¥¹¤Î½ªÎ»¤òÂÔ¤Á¤Þ¤¹¤¬¡¢ ¥æ¡¼¥¶¡¼¤ÏC-g¤ÈÂǤäÆÃæÃǤǤ­¤Þ¤¹¡£ C-g¤Ï¤Þ¤º¥·¥°¥Ê¥ëSIGINT¤Ç¥µ¥Ö¥×¥í¥»¥¹¤ò¥­¥ë¤·¤è¤¦¤È¤·¤Þ¤¹¤¬¡¢ ÃæÃǤò´°Î»¤¹¤ë¤Þ¤¨¤Ë¥µ¥Ö¥×¥í¥»¥¹¤¬½ªÎ»¤¹¤ë¤Î¤òÂÔ¤Á¤Þ¤¹¡£ ¤½¤Î´ü´Ö¤Ë¥æ¡¼¥¶¡¼¤¬¤µ¤é¤ËC-g¤òÂǤĤȡ¢ SIGKILL¤Ç¥µ¥Ö¥×¥í¥»¥¹¤ò¨ºÂ¤Ë¥­¥ë¤·¡¢¤¿¤À¤Á¤ËÃæÃǤò´°Î»¤·¤Þ¤¹¡£ See Quitting¡£

Ʊ´ü¥µ¥Ö¥×¥í¥»¥¹ºîÀ®´Ø¿ô¤Ï¡¢ ¤½¤Î¥×¥í¥»¥¹¤¬¤É¤Î¤è¤¦¤Ë½ªÎ»¤·¤¿¤«¤òɽ¤¹¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£

Ʊ´ü¥µ¥Ö¥×¥í¥»¥¹¤«¤é¤Î½ÐÎϤϡ¢¥Õ¥¡¥¤¥ë¤«¤éÆÉ¤à¥Æ¥­¥¹¥È¤ÈƱÍͤˡ¢ ¥³¡¼¥Ç¥£¥ó¥°¥·¥¹¥Æ¥à¤òÍѤ¤¤Æ°ìÈ̤ˤÏÉü¹æ²½¤·¤Þ¤¹¡£ call-process-region¤¬¥µ¥Ö¥×¥í¥»¥¹¤ØÁ÷¤ëÆþÎϤϡ¢ ¥Õ¥¡¥¤¥ë¤Ø½ñ¤¯¥Æ¥­¥¹¥È¤ÈƱÍͤˡ¢ ¥³¡¼¥Ç¥£¥ó¥°¥·¥¹¥Æ¥à¤òÍѤ¤¤ÆÉ乿²½¤·¤Þ¤¹¡£ See Coding Systems¡£

Function: call-process program &optional infile destination display &rest args

¤³¤Î´Ø¿ô¤Ï¡¢ÊÌ¤Î¥×¥í¥»¥¹¤Çprogram¤ò¸Æ¤Ó½Ð¤·¡¢ ¤½¤ì¤¬½ªÎ»¤¹¤ë¤Î¤òÂԤġ£

infile¤¬nil¤Ç¤Ê¤±¤ì¤Ð ¥×¥í¥»¥¹¤Ø¤Îɸ½àÆþÎϤÏinfile¤Ç¤¢¤ë¤¬¡¢ ¤µ¤â¤Ê¤±¤ì¤Ð/dev/null¤Ç¤¢¤ë¡£ °ú¿ôdestination¤Ç¥×¥í¥»¥¹¤Î½ÐÎÏÀè¤ò¤Ä¤®¤Î¤è¤¦¤Ë»ØÄꤹ¤ë¡£

¥Ð¥Ã¥Õ¥¡

¤³¤Î¥Ð¥Ã¥Õ¥¡¤Î¥Ý¥¤¥ó¥È¤Î¤Þ¤¨¤Ë½ÐÎϤòÁÞÆþ¤¹¤ë¡£ ¤³¤ì¤Ë¤Ï¥×¥í¥»¥¹¤Îɸ½à½ÐÎϤÈɸ½à¥¨¥é¡¼¤Îξ¼Ô¤ò´Þ¤à¡£

ʸ»úÎó

ʸ»úÎó¤Ç»ØÄꤷ¤¿Ì¾Á°¤Î¥Ð¥Ã¥Õ¥¡¤Î¥Ý¥¤¥ó¥È¤Î¤Þ¤¨¤Ë½ÐÎϤòÁÞÆþ¤¹¤ë¡£

t

¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Î¥Ý¥¤¥ó¥È¤Î¤Þ¤¨¤Ë½ÐÎϤòÁÞÆþ¤¹¤ë¡£

nil

½ÐÎϤòÇË´þ¤¹¤ë¡£

0

½ÐÎϤòÇË´þ¤·¡¢¥µ¥Ö¥×¥í¥»¥¹¤Î½ªÎ»¤òÂÔ¤¿¤º¤Ë¤¿¤À¤Á¤ËÌá¤ë¡£

¤³¤Î¾ì¹ç¡¢¤³¤Î¥×¥í¥»¥¹¤ÏEmacs¤ÈʹԤ·¤ÆÆ°ºî¤¹¤ë¤Î¤Ç¿¿¤Î¥µ¥Ö¥×¥í¥»¥¹¤Ç¤Ï¤Ê¤¤¡£ ¤·¤«¤·¡¢¤³¤Î´Ø¿ô¤«¤éÌá¤ë¤ÈEmacs¤Ï¥µ¥Ö¥×¥í¥»¥¹¤Î½èÍý¤òËܼÁŪ¤Ë¤Ï½ª¤¨¤¿¤È ¤¤¤¦°ÕÌ£¤ÇƱ´ü¥×¥í¥»¥¹¤È¹Í¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

(real-destination error-destination)

ɸ½à½ÐÎϤÈɸ½à¥¨¥é¡¼¤òʬΥ¤·¡¢ real-destination¤Î»ØÄê¤Ë½¾¤Ã¤ÆÄ̾ï¤Î½ÐÎϤò°·¤¤¡¢ error-destination¤Ë½¾¤Ã¤Æ¥¨¥é¡¼½ÐÎϤò½èÍý¤¹¤ë¡£ error-destination¤¬nil¤Ç¤¢¤ë¤È¥¨¥é¡¼½ÐÎϤòÇË´þ¤·¡¢ t¤Ç¤¢¤ë¤ÈÄ̾ï¤Î½ÐÎϤ˺®¤¼¡¢ ʸ»úÎó¤Ç¤¢¤ë¤È¤½¤Î̾Á°¤Î¥Õ¥¡¥¤¥ë¤Ë¥¨¥é¡¼½ÐÎϤò¿¶¤ê¸þ¤±¤ë¡£

¥¨¥é¡¼½ÐÎϤòÆþ¤ì¤ë¥Ð¥Ã¥Õ¥¡¤òľÀܤ˻ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£ ¤½¤ì¤ò¼ÂÁõ¤¹¤ë¤Î¤ÏÆñ¤·¤¹¤®¤ë¡£ ¤·¤«¤·¡¢¥¨¥é¡¼½ÐÎϤò°ì»þ¥Õ¥¡¥¤¥ë¤ØÁ÷¤Ã¤Æ¤«¤é ¤½¤Î¥Õ¥¡¥¤¥ë¤ò¥Ð¥Ã¥Õ¥¡¤ËÁÞÆþ¤¹¤ì¤Ð¡¢Æ±¤¸¸ú²Ì¤òÆÀ¤é¤ì¤ë¡£

display¤¬nil°Ê³°¤Ç¤¢¤ë¤È¡¢call-process¤Ï¡¢ ½ÐÎϤ¬ÁÞÆþ¤µ¤ì¤ë¤È¥Ð¥Ã¥Õ¥¡¤òºÆÉ½¼¨¤¹¤ë¡£ ¡Ê¤·¤«¤·¡¢¥³¡¼¥Ç¥£¥ó¥°¥·¥¹¥Æ¥à¤È¤·¤Æ¼ÂºÝ¤Î¥Ç¡¼¥¿¤«¤é ¥³¡¼¥Ç¥£¥ó¥°¥·¥¹¥Æ¥à¤ò¿äÄꤹ¤ëundecided¤ò»ØÄꤷ¤Æ¤¤¤ë¤È¡¢ ÈóASCIIʸ»ú¤Ë½Ð²ñ¤¦¤ÈºÆÉ½¼¨¤ò·Ñ³¤Ç¤­¤Ê¤¤¾ì¹ç¤â¤¢¤ë¡£ ¤³¤ì¤ò½¤Àµ¤¹¤ë¤Î¤¬º¤Æñ¤Ç¤¢¤ëº¬ËÜŪ¤ÊÍýͳ¤¬¤¢¤ë¡£¡Ë ¤µ¤â¤Ê¤±¤ì¤Ð¡¢´Ø¿ôcall-process¤ÏºÆÉ½¼¨¤·¤Ê¤¤¤Î¤Ç¡¢ Emacs¤¬Ä̾ï¤Î²áÄø¤Ç¤½¤Î¥Ð¥Ã¥Õ¥¡¤òºÆÉ½¼¨¤¹¤ë¤Þ¤Ç¤Ï¡¢ ¥¹¥¯¥ê¡¼¥ó¾å¤Ç·ë²Ì¤Ï¸«¤¨¤Ê¤¤¡£

»Ä¤ê¤Î°ú¿ôargs¤Ï¡¢¥×¥í¥°¥é¥à¤ËÂФ¹¤ë ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò»ØÄꤹ¤ëʸ»úÎó¤Ç¤¢¤ë¡£

¡ÊÂÔ¤¿¤Ê¤¤¤è¤¦¤Ë»Ø¼¨¤·¤Ê¤¤¸Â¤ê¡Ëcall-process¤¬ÊÖ¤¹Ãͤϡ¢ ¥×¥í¥»¥¹¤Î½ªÎ»Íýͳ¤òɽ¤¹¡£ ¿ô¤Ç¥µ¥Ö¥×¥í¥»¥¹¤Î½ªÎ»¾õÂÖ¤òɽ¤·¡¢ 0¤ÏÀ®¸ù¡¢¤½¤ì°Ê³°¤ÎÃͤϼºÇÔ¤ò°ÕÌ£¤¹¤ë¡£ ¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤Ç½ªÎ»¤¹¤ë¤È¡¢ call-process¤Ï¥·¥°¥Ê¥ë¤òµ­½Ò¤¹¤ëʸ»úÎó¤òÊÖ¤¹¡£

¤Ä¤®¤ÎÎã¤Ç¤Ï¡¢¥Ð¥Ã¥Õ¥¡‘foo’¤¬¥«¥ì¥ó¥È¤Ç¤¢¤ë¡£

(call-process "pwd" nil t)
     ⇒ nil

---------- Buffer: foo ----------
/usr/user/lewis/manual
---------- Buffer: foo ----------
(call-process "grep" nil "bar" nil "lewis" "/etc/passwd")
     ⇒ nil

---------- Buffer: bar ----------
lewis:5LTsHm66CSWKg:398:21:Bil Lewis:/user/lewis:/bin/csh

---------- Buffer: bar ----------

insert-directory¤ÎÄêµÁ¤Ë¤¢¤ëcall-process¤Î ¤è¤¤»ÈÍÑÎã¤ò¤Ä¤®¤Ë¼¨¤¹¡£

(call-process insert-directory-program nil t nil switches
              (if full-directory-p
                  (concat (file-name-as-directory file) ".")
                file))
Function: call-process-region start end program &optional delete destination display &rest args

¤³¤Î´Ø¿ô¤Ï¡¢program¤òư¤«¤¹¥×¥í¥»¥¹¤Îɸ½àÆþÎϤȤ·¤Æ start¤Èend¤Î¤¢¤¤¤À¤Î¥Æ¥­¥¹¥È¤òÁ÷¤ë¡£ delete¤¬nil°Ê³°¤Ç¤¢¤ë¤È¡¢Á÷¤Ã¤¿¥Æ¥­¥¹¥È¤òºï½ü¤¹¤ë¡£ ¤³¤ì¤Ï¡¢¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËÁ÷¤Ã¤¿ÆþÎϤΤ«¤ï¤ê¤Ë½ÐÎϤòÁÞÆþ¤¹¤ë¤³¤È¤ò °ÕÌ£¤¹¤ëdestination¤¬t¤Ç¤¢¤ë¤È¤­¤ËÍ­ÍѤǤ¢¤ë¡£

°ú¿ôdestination¤Èdisplay¤Ï¡¢ ¥µ¥Ö¥×¥í¥»¥¹¤«¤é¤Î½ÐÎϤò¤É¤Î¤è¤¦¤Ë°·¤¤¡¢ ½ÐÎϤ«ÅþÃ夹¤ë¤¿¤Ó¤Ëɽ¼¨¤ò¹¹¿·¤¹¤ë¤«¤É¤¦¤«¤òÀ©¸æ¤¹¤ë¡£ ¾Ü¤·¤¯¤Ï¡¢¾åµ­¤Îcall-process¤Îµ­½Ò¤ò»²¾È¡£ destination¤¬À°¿ô0¤Ç¤¢¤ë¤È¡¢ call-process-region¤Ï¡¢¥µ¥Ö¥×¥í¥»¥¹¤Î½ªÎ»¤òÂÔ¤¿¤º¤Ë ½ÐÎϤòÇË´þ¤·¤Æ¤¿¤À¤Á¤Ënil¤òÊÖ¤¹¡£

»Ä¤ê¤Î°ú¿ôargs¤Ï¡¢¥×¥í¥°¥é¥à¤ËÂФ¹¤ë ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò»ØÄꤹ¤ëʸ»úÎó¤Ç¤¢¤ë¡£

call-process-region¤ÎÌá¤êÃͤÏcall-process¤ÈƱÍͤǤ¢¤ê¡¢ ÂÔ¤¿¤º¤ËÌá¤ë¤è¤¦¤Ë»Ø¼¨¤¹¤ë¤Ènil¤Ç¤¢¤ê¡¢ ¤µ¤â¤Ê¤±¤ì¤Ð¥µ¥Ö¥×¥í¥»¥¹¤Î½ªÎ»¾õÂÖ¤òɽ¤¹¿ô¤«Ê¸»úÎó¤Ç¤¢¤ë¡£

¤Ä¤®¤ÎÎã¤Ç¤Ï¡¢ ¥Ð¥Ã¥Õ¥¡‘foo’¤Î»Ï¤á¤Î5ʸ»ú¡Êñ¸ì‘input’¡Ë¤òɸ½àÆþÎϤȤ·¤Æ ¥æ¡¼¥Æ¥£¥ê¥Æ¥£cat¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ëcall-process-region¤ò»È¤¦¡£ cat¤Ï¡¢É¸½àÆþÎϤòɸ½à½ÐÎϤإ³¥Ô¡¼¤¹¤ë¡£ °ú¿ôdestination¤¬t¤Ç¤¢¤ë¤Î¤Ç¡¢ ½ÐÎϤϥ«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËÁÞÆþ¤µ¤ì¤ë¡£

---------- Buffer: foo ----------
input∗
---------- Buffer: foo ----------
(call-process-region 1 6 "cat" nil t)
     ⇒ nil

---------- Buffer: foo ----------
inputinput∗
---------- Buffer: foo ----------

¥³¥Þ¥ó¥Éshell-command-on-region¤Ï¡¢ ¤Ä¤®¤Î¤è¤¦¤Ëcall-process-region¤ò»È¤¦¡£

(call-process-region 
 start end         
 shell-file-name      ; ¥×¥í¥°¥é¥à¤Î̾Á°
 nil                  ; ¥ê¡¼¥¸¥ç¥ó¤òºï½ü¤·¤Ê¤¤
 buffer               ; ½ÐÎϤÏbuffer¤ØÆþ¤ì¤ë
 nil                  ; ½ÐÎÏÃæ¤ÏºÆÉ½¼¨¤·¤Ê¤¤
 "-c" command)        ; ¥·¥§¥ë¤ËÂФ¹¤ë°ú¿ô
Function: shell-command-to-string command

¤³¤Î´Ø¿ô¤Ï¡¢¥·¥§¥ë¥³¥Þ¥ó¥É¤È¤·¤Æcommand¡Êʸ»úÎó¡Ë¤ò¼Â¹Ô¤·¡¢ ¥³¥Þ¥ó¥É¤Î½ÐÎϤòʸ»úÎó¤È¤·¤ÆÊÖ¤¹¡£


Next: , Previous: Shell Arguments, Up: Processes   [Contents][Index]