본문 바로가기

분류 전체보기47

[PIPEX / C] Utils & SanityCheck Funcs 구현 t_boolean check_argc(int argc) { if (argc != 5) { perror("Usage: ./pipex file1 cmd1 cmd2 file2"); return (FALSE); } return (TRUE); } t_boolean check_open(int *fd) { if (*fd == ERROR) { perror("open error"); return (FALSE); } return (TRUE); } t_boolean check_access(char *str[]) { char *file1; char *file2; int read; int write; read = R_OK; write = W_OK; file1 = str[1]; file2 = str[4]; if (access(f.. 2024. 3. 23.
[PIPEX / C] 메인 함수 흐름 및 fork()-wait()에 대하여 우선 파이프 엑스의 main함수를 작성했다. 파이프를 연결해서 출력하는 결과를 저장하려면 우선 읽는 파일 설정과 출력 파일 설정이 필요하다. pipex 읽기 전용 - 출력 전용 파일 만들기 pipex.infile = open(argv[1], O_RDONLY); pipex.outfile = open(argv[4], O_WRONLY | O_CREAT | O_TRUNC, 0644); open(fd, open_option, mod); 특정 파일의 옵션과 권한을 설정한다. if (!sanity_check(argc, argv, &pipex)) return (0); if (!check_fork(&pid1)) return (0); 무결성 검사를 통해 인자의 개수, 파일접근 권한 등 초기 조건을 검사 fork함수의 호출.. 2024. 3. 23.
[PIPEX/C] pipex 목표 pipex 프로젝트: Unix 파이프라인의 C 언어 구현 Unix 시스템에서 파이프라인은 데이터를 한 프로세스에서 다른 프로세스로 효율적으로 전달하는 강력한 도구입니다. pipex 프로젝트는 이러한 파이프라인의 작동 원리를 C 언어로 구현한 것으로, 명령줄 인수를 통해 파일과 명령어를 받아 처리하는 프로그램입니다. 프로그램 실행 조건 pipex는 아래와 같이 실행되어야 합니다: $> ./pipex file1 cmd1 cmd2 file2 file1 에서 입력을 받아 cmd1 명령어를 실행합니다. cmd1 의 실행 결과는 cmd2 로 전달됩니다. cmd2 의 최종 결과는 file2 에 저장됩니다. 이 과정은 유닉스의 파이프라인( file2)과 동일한 작업을 수행합니다. .. 2024. 3. 23.
[CPP] 소켓 통신 채팅 서버 만들기 - 클라이언트 구현하기 이제 클라이언트 쪽 코드를 만들면된다. 기능은 서버에 연결, 메시지 송수신 정도로 간단하게 구현했다. #ifndef CLIENT_HPP #define CLIENT_HPP #include #include #include #include #include class ChatClient { public: ChatClient(const std::string& ip, int port, const std::string& nickname) : ip_(ip), port_(port), nickname_(nickname) { initializeWinsock(); connectToServer(); } ~ChatClient() { cleanup(); } void startChat(); void start(); private: .. 2024. 3. 21.