¾ðÊó²Ê³Ø¤ò³Ø¤ÖÂç³ØÀ¸¤¬¥×¥í¥°¥é¥ß¥ó¥°(C¸À¸ì,Java¤Ê¤É)¡¢¥Í¥Ã¥È¥ï¡¼¥¯¡¢»ñ³Ê»î¸³(¾ðÊó½èÍýµ»½Ñ¼Ô»î¸³,CCNA)¤Ê¤É¤Ë´Ø¤¹¤ëµ»ö¤ò½ñ¤¤¤Æ¤¤¤Þ¤¹¡£
execl(), execlp(), execle(), execv(), execvp(), execve()¤Ï¡¢¡Öexec²¡×¤ä¡Öexec¥Õ¥¡¥ß¥ê¡¼¡×¤È¸Æ¤Ð¤ì¡¢»ØÄꤷ¤¿¿·¤·¤¤¥×¥í¥»¥¹¤Ç¸½ºß¤Î¥×¥í¥»¥¹¤òÃÖ¤´¹¤¨¤ë¥×¥í¥»¥¹¥¤¥á¡¼¥¸¤òÃÖ¤´¹¤¨¤ë´Ø¿ô¤Ç¤¹¡£Ê¿¤¿¤¯¸À¤¦¤È¡¢exec¤·¤¿¥×¥í¥»¥¹¡Ê¥×¥í¥°¥é¥à¡Ë¤Ï¿·¤·¤¤¥×¥í¥»¥¹¤ËÊѿȤ·¤Þ¤¹¡£
¤³¤³¤Ç¤Ï¡¢execlp()´Ø¿ô¤òÍѤ¤¤¿¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤ò¾Ò²ð¤·¤Þ¤¹¡£
#include <unistd.h> extern char **environ; int execlp(const char *file, const char *arg, ...);
¤³¤Î¥¨¥ó¥È¥ê¤Ë¤ÏͽÈ÷Ãμ±ÊÔ¡Ösystem´Ø¿ô¡§¿·¤·¤¤¥×¥í¥»¥¹¤ÎºîÀ®¡×¤¬Â¸ºß¤·¤Þ¤¹¤Î¤Ç¡¢Àè¤Ë¤½¤Á¤é¤ò¤´Í÷¤¤¤¿¤À¤±¤¿¤é¤È»×¤¤¤Þ¤¹¡£
#include <unistd.h>
#include <stdio.h>
int main() {
printf("Running ps with execlp\n");
execlp("ps", "ps", NULL);
printf("Done.\n");
return 0;
}
¾å¤Î¥×¥í¥°¥é¥à¤Ïexeclp()´Ø¿ô¤òÍѤ¤¤Æps¥³¥Þ¥ó¥É¤òµ¯Æ°¤¹¤ë¥×¥í¥°¥é¥à¤Ç¤¹¡£°ú¿ô¤Ë¤Ïµ¯Æ°¤¹¤ë¥Õ¥¡¥¤¥ë̾"ps"¤È²ÄÊÑŰú¿ô¤ò½ªÃ¼¤¹¤ëNULL¤òÅϤ·¤Æ¤¤¤Þ¤¹¡£
¤³¤Î¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤È²¼¤Î¤è¤¦¤Ê½ÐÎϤ¬ÆÀ¤é¤ì¤Þ¤¹¡£
****@ubuntu-vm:~/work/os$ ./exec_ps Running ps with execlp PID TTY TIME CMD 11588 pts/0 00:00:06 bash 15496 pts/0 00:00:01 emacs 19478 pts/0 00:00:00 ps ****@ubuntu-vm:~/work/os$
¤³¤Î½ÐÎÏ·ë²Ì¤Ë¤ÏÃíÌܤ¹¤Ù¤ÅÀ¤¬3¤Ä¤¢¤ê¤Þ¤¹¡£
1¤Ä¤Ï¿·¤·¤¤¥·¥§¥ë¤¬µ¯Æ°¤»¤º¤Ëps¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¤³¤È¤Ç¤¹¡£¤³¤ì¤Ïsystem()´Ø¿ô¤ÈÈæ³Ó¤·¤¿¤È¤¤ÎÍøÅÀ¤Ç¤¢¤ê¤Þ¤¹¡£(*1)
2¤ÄÌܤÏps¤Ç½ÐÎϤµ¤ì¤ë¸½ºß²ÔÆ¯Ãæ¤Î¥×¥í¥»¥¹¤ÎÃæ¤Ë¼«Ê¬(exec_ps)¼«¿È¤¬¤¤¤Ê¤¤¤³¤È¤Ç¤¹¡£¤³¤ì¤Ï¡¢execlp()´Ø¿ô¤Çps¤ËÊѿȤ·¤Æ¤·¤Þ¤Ã¤¿¤¿¤á¤Ç¤¹¡£
¤½¤·¤Æ¡¢ºÇ¸å¤Î1¤Ä¤Ï¡¢"Done."¤¬½ÐÎϤµ¤ì¤º¤Ë¥×¥í¥°¥é¥à¤¬½ªÎ»¤·¤Æ¤¤¤ë¤³¤È¤Ç¤¹¡£¤³¤ì¤Ï¡¢¥×¥í¥°¥é¥à¤Î7¹ÔÌܤÇ"Done.\n"¤òprintf()¤¹¤ëÁ°¤Î¹Ô¤Çexeclp()¤·¤Æ¡¢ÊÌ¤Î¥×¥í¥°¥é¥à¡Ê¥×¥í¥»¥¹¡Ëps¤ËÊѿȤ·¤Æ¤·¤Þ¤Ã¤Æ¤¤¤ë¤¿¤á¤Ç¤¹¡£Êѿȸå¤Ï¥×¥í¥»¥¹¤¬´°Á´¤ËÃÖ¤´¹¤ï¤Ã¤Æ¤·¤Þ¤¤¡¢¤â¤È¤ËÌá¤ë¤³¤È¤¬¤Ê¤¤¤¿¤á¡¢execlp()¤è¤ê²¼¤Î¹Ô¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£
±þÍÑ
exec²¤Î´Ø¿ô¤È¡¢¤¤¤¯¤Ä¤«¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¡Êfork()¤Ê¤É¡Ë¤òÁȤ߹ç¤ï¤»¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢°ÊÁ°¤Î¥¨¥ó¥È¥ê¡ÖUNIX¥·¥¹¥Æ¥à¥×¥í¥°¥é¥ß¥ó¥°¡Ý´Ê°×¥·¥§¥ë¤Î¼ÂÁõ¡×¤Ç¾Ò²ð¤·¤¿¤è¤¦¤Ê´Êñ¤Ê¥·¥§¥ë¤òºî¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡ª
![]() | Linux¥×¥í¥°¥é¥ß¥ó¥°¡½ÎãÂê¤Ç³Ø¤ÖUNIX¥×¥í¥°¥é¥ß¥ó¥°´Ä¶¤Î¤¹¤Ù¤Æ ¥Ë¡¼¥ë ¥Þ¥·¥å¡¼ ¥ê¥Á¥ã¡¼¥É ¥¹¥È¡¼¥ó¥º Neil Matthew ¥½¥Õ¥È¥Ð¥ó¥¯¥¯¥ê¥¨¥¤¥Æ¥£¥Ö 2004-08 Çä¤ê¾å¤²¥é¥ó¥¥ó¥° : 141253 ¤ª¤¹¤¹¤áÊ¿¶Ñ ![]() Amazon¤Ç¾Ü¤·¤¯¸«¤ë by G-Tools |
*1: system()´Ø¿ô¤Ë¤Ä¤¤¤Æ¤ÏͽÈ÷Ãμ±ÊÔ¡Ösystem´Ø¿ô¡§¿·¤·¤¤¥×¥í¥»¥¹¤ÎºîÀ®¡×¡Ë¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡Ë
¥Æ¡¼¥Þ:¥×¥í¥°¥é¥ß¥ó¥° - ¥¸¥ã¥ó¥ë:¥³¥ó¥Ô¥å¡¼¥¿ - ¥½¡¼¥·¥ã¥ë¥Ö¥Ã¥¯¥Þ¡¼¥¯:
![]()
Author:TBVector
»ä¤Î¥µ¥¤¥È
¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ÈRSS
ͧã¤Î¥µ¥¤¥È
¤¢¤ï¤»¤ÆÆÉ¤ß¤¿¤¤
¤Ï¤Æ¤Ê¥ê¥ó¥°