4-6 Process (과제-1)

do·2022년 5월 2일
0

API

목록 보기
30/42

1. 문제 : 파일에서 특정 문자열을 찾아서 문자열이 존재하는 라인 번호와 해당 라인을 모두 출력하는 프로그램을 작성하시오. (리눅스 grep 명령어를 호출하여 기능을 수행하도록 프로그램 작성)
2. 입력 : 프로그램 실행 시, 인자로 파일명과 찾을 문자열을 입력받는다. 파일명은 1개로 제한한다. (프로그램명 찾을문자열 파일명)
3. 출력 :
a. 파일에서 찾은 문자열이 존재하는 line번호와 해당 라인 정보를 출력한다. (grep 출력 양식 그대로 사용)

입력) my_grep float dcl.c
출력)
 10:	float degress= 0.0012f;
 11:	float radians;
 12:	float const pi = 3.14159;
 13:	float radians2;

b. 문자열이 존재하지 않는 경우에는 아무것도 출력안되도록 한다.(grep 출력 양식 그대로 사용)

입력) my_grep test dcl.c
출력)

c. 파일이 존재하지 않는 경우에는 에러 문구 출력한다.(grep 출력 양식 그대로 사용)

입력) my_grep float test.c
출력) /bin/grep: test.c: No such file or directory

my_grep.c

#include <stdio.h>
#include <stdlib.h> //system()
#include <fcntl.h> //open()
#include <unistd.h> //access()
#include <string.h> //strstr()

int main(int argc, char *argv[])
{
        const char* search = argv[1];
        const char* path = argv[2];

        if (argc != 3) {
                printf("인자를 잘 못 입력하였습니다.\n");
                return 0;
        }

        char buf[255];
        sprintf(buf, "grep -n %s %s", search, path);
        system(buf);
        printf("system함수가 실행되었습니다.\n");

//      execl("/bin/grep", "grep", "-n", search, path, NULL);
//      printf("exec함수가 실행되었습니다.\n");

        return 0;
}

0개의 댓글