linux man page : popen - ÇÁ·Î¼¼½º ÀÔÃâ·Â
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=popen">popen</a>(2)

1장. popen(2)

차례
1.1절. »ç¿ë¹ý
1.2절. ¼³¸í
1.3절. ¹Ýȯ°ª
1.4절. ¿¡·¯
1.5절. ¿¹Á¦

ÇÁ·Î¼¼½º I/O


1.1절. »ç¿ë¹ý

#include <stdio.h>

FILE *popen(const char *command, const char *type);
int pclose();
		


1.2절. ¼³¸í

popen Àº command ¸¦ shellÀ» °¡µ¿½ÃÄѼ­ ¿­°í pipe(2)·Î ¿¬°áÇÑ´Ù. pipe ´Â ±âº»ÀûÀ¸·Î ´Ü¹æÇâÀ¸·Î¸¸ Á¤ÀÇ µÇ¾î ÀÖÀ½À¸·Î, ÀбâÀü¿ë ȤÀº ¾²±âÀü¿ë À¸·Î¸¸ ¿­¼ö ÀÖÀ¸¸ç, type ·Î Á¤ÀǵȴÙ. popen Àº command ¸¦ ½ÇÇà½Ã۰í pip ¿¬°áÀ» À§Çؼ­ ³»ºÎÀûÀ¸·Î fork() ¿Í pipe() ¸¦ »ç¿ëÇÑ´Ù.

command ´Â ½ÇÇཀྵÀÎ /bin/sh ¿¡ -c ¿É¼ÇÀ» »ç¿ëÇÏ¿©¼­ Àü´ÞµÇ°Ô µÈ´Ù.

pclose(2) ÇÔ¼ö´Â Á¾·áµÇ´Â °ü·Ã ÇÁ·Î¼¼½º¸¦ ±â´Ù¸®¸ç wait(2) °¡ ¹ÝȯÇÏ´Â °Íó·³ ¸í·É¾îÀÇ Á¾·á »óŸ¦ ¹ÝȯÇÑ´Ù.


1.3절. ¹Ýȯ°ª

popen Àº ½ÇÆÐÇÒ°æ¿ì NULL À» ¹ÝȯÇÑ´Ù. pclose ´Â Á¾·áµÇ´Â °ü·Ã ÇÁ·Î¼¼½º¸¦ ±â´Ù¸®¸ç ¸í·É¾îÀÇ Á¾·á »óŸ¦ ¹ÝȯÇÑ´Ù. ¿¡·¯°¡ ¹ß°ßµÉ°æ¿ì -1 À» ¸®ÅÏÇÑ´Ù.


1.4절. ¿¡·¯

popen ÇÔ¼ö´Â ¸Þ¸ð¸® ÇÒ´çÀÌ ½ÇÆÐÇÑ´Ù¸é, errno ¸¦ ¼³Á¤ÇÏÁö ¾Ê´Â´Ù. fork()³ª pipe()¿¡¼­ ½ÇÆÐÇßÀ»°æ¿ì Àû´çÇÑ errno ¸¦ ¼³Á¤ÇÑ´Ù.

pclose()´Â ÀÚ½ÄÀÇ »óŸ¦ ¾òÀ»¼ö ¾øÀ»°æ¿ì errno ¸¦ ECHILD ·Î ¼³Á¤ÇÑ´Ù.


1.5절. ¿¹Á¦

#include <stdio.h>

#define MAXLINE 256

int main()
{
    FILE *fp;
    int state;

    char buff[MAXLINE];
    fp = popen("ls -al", "r");
    if (fp == NULL)
    {
        perror("erro : ");
        exit(0);
    }

    while(fgets(buff, MAXLINE, fp) != NULL)
    {
        printf("%s", buff);
    }

    state = pclose(fp);
    printf("state is %d\n", state);
}
		

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.