C언어에서 본쉘로 짠 스크립트 처리 방법

조회수 2445회

C언어에서 bash script를 사용하려고 합니다. bash스크립트 파일을 실행시키는 것이 아니라

아래 소스와 같이 bash script를 define문으로 정의한 후 프로그램 자체에서 실행시키려고 하는데 생각처럼 실행이 되지 않네요

#define RESSHELL "/bin/sh -c '\
OS_CHECK_CMD=uname\r\n\
echo $OS_CHECK_CMD\r\n\
OS_CHECK_CMD_PATH=`command -v $OS_CHECK_CMD`\r\n\
echo $OS_CHECK_CMD_PATH\r\n\
'\
"

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

#define MAXLINE 256

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

    char buff[MAXLINE];
    fp = popen(RESSHELL, "r");

    if (fp == NULL)
    {
        perror("erro : ");
        exit(0);
    }

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

    state = pclose(fp);
}

위의 코드를 실행시키면 /usr/bin/uname이 출력되어야하는데 공백이 출력이 됩니다.

OS_CHECK_CMD_PATH=`command -v $OS_CHECK_CMD`\r\n\

이 부분에서 OS_CHECK_CMD_PATH에 결과값이 저장이 안되는거 같은데 어떻게 해야 할까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)