programing

C에서 Unix 프로그래밍을 연습하려면 어떻게 해야 하나요?

bestcode 2022. 8. 31. 22:44
반응형

C에서 Unix 프로그래밍을 연습하려면 어떻게 해야 하나요?

전문적인 자바(그리고 파이썬) 프로그래밍을 5년 동안 하고 컴퓨터 과학 교육이 서서히 사라졌다고 느낀 후, 저는 제 시야/일반적인 유용성을 세계로 넓히고 제가 기계에 정말로 영향력을 가지고 있다고 느끼는 무언가를 하기로 결심했습니다.저는 C와 Unix 프로그래밍을 배우기로 했습니다. 왜냐하면 그곳이 가장 흥미로운 문제들이 많이 있는 곳이기 때문입니다.

제 최종 목표는 일주일에 40~50시간을 비용을 지불하는 일에 소비해야 하기 때문에 제가 더 잘하고 싶은 코딩 타입이 될 수 있다는 것입니다.물론, 당신이 전에 하지 않았던 일을 할 수 있도록 고용되는 것은 아니기 때문에, 지금은 내가 스스로 일을 하고 있습니다.

이를 위해 K&R부터 시작했는데, K&R은 각 챕터마다 퍼져 있는 연습 덕분에 어느 정도 큰 도움이 되었습니다.그 후 Computer Systems: A Programmer's Perspective로 넘어가 Unix Environment의 Advanced Programming의 10개 장을 읽었습니다.이 책을 다 읽으면 유닉스 네트워크 프로그래밍을 읽을 거예요.

Stevens 책에는 프로그래밍 문제가 없다는 점이 누락되어 있습니다.이 책들은 주로 기능을 문서화하고 예를 제시하며 몇 가지 장 끝의 질문이 뒤따릅니다.K&R의 각 장에 있는 지식을 활용하는 것이 도전받는 것보다 훨씬 더 도움이 될 것 같습니다.각 기능에 대해 테스트 프로그램을 작성할 수 있지만, 이것은 바람직하지 않은 방법입니다.(1) 외부적인 과제에 직면했을 때보다 의욕이 떨어졌을지도 모르고, (2) 이미 생각난 방법으로만 기능을 사용할 수 있다고 생각하기 때문입니다.

그래서 어떻게 하면 좋을지 추천을 받고 싶어요.물론 첫 번째 선택은 Unix 프로그래밍에 문제가 있는 리소스를 찾는 것입니다.오픈 소스 C의 프로젝트를 찾아 공헌하는 것도 검토하고 있습니다만, 소프트웨어의 사용법이나 코드 베이스의 학습에 약간의 오버헤드가 발생하기 때문에, 조금 곤란합니다.제가 정기적으로 사용하는 오픈소스 C프로젝트는 Python뿐인데, 얼마나 쉽게 시작할 수 있을지 모르겠습니다.

그렇다고는 해도, 생각지도 못한 것이 있기 때문에, 여러가지 제안을 받아 들일 수 있습니다.

많은 핵심 Unix 유틸리티를 재창조합니다.이들 대부분은 C로 쓰여져 있기 때문에 학습을 시작하는 좋은 방법입니다.기술에 따라 복사하기 어려운 유틸리티 또는 쉬운 유틸리티를 선택합니다.

나만의 malloc을 써보세요.UNIX와 C 프로그래밍에 대해 많은 것을 배우게 될 것입니다.

구글에서 컴퓨터 과학 운영체제 과정을 수강하고 프로젝트를 진행합니다.많은 학교들이 공공 웹사이트에 이러한 프로젝트를 가지고 있어서 필요한 모든 것을 얻을 수 있다.여기 퍼듀의 사이트로 연결되는 링크가 있습니다.조개껍데기 프로젝트에 도전해보세요.어려웠지만 정말 교육적이었어요

다음은 C/Unix 프로그래밍 서적에 대한 스택오버플로우 게시물입니다.그들이 유명해진 주된 이유는 다른 자원으로 널리 퍼진 것이다.

사자성어를 연습하고(포인터의 자세한 내용을 이해하는 등) 도움이 되는 프로젝트를 고르세요.리스트의 세 번째 항목에는 C프로그램이 자바와 다른 고도의 숙어들이 많이 포함되어 있습니다(Disclaimer, I writed).

C에서 XLib 또는 Win32 GUI 프로그래밍을 배우는 것은 GUI 프로그래밍에서는 거의 모든 것이 C보다 좋기 때문에 그다지 유용하지 않을 수 있습니다.또, 코어의 C엔진을 다른 언어로 정리하는 것은 일반적으로 매우 간단합니다.단, 속도에 대해서는 그다지 염려하고 있지 않습니다.출발점으로 '시스템' 프로그래밍 애플리케이션에 집중하십시오. 여기서 C에서 실제 주행 거리를 얻을 가능성이 가장 높습니다.TCL이나 Python과 같은 스크립트 언어 중 하나의 C 인터페이스가 어떻게 작동하는지 알아봅니다.

소켓을 사용하는 서버측 항목(예를 들어 네트워크 패킷을 분리하거나 프로토콜을 해석하는 등)이나 포인터 헤비 코드를 작성하면 C의 핵심 기능에 바로 들어갑니다.WRS 책이 있는 경우 pthreads를 사용해 보십시오(IIRC UNP2에는 pThreads에 대한 섹션이 많이 있습니다).반대로 논블로킹 I/O를 사용하는 것을 작성합니다.이것은 C의 홈그라운드로, 이것을 하면 C에 대한 충분한 실무 지식을 얻을 수 있습니다.구현할 네트워크 프로토콜에 대한 몇 가지 아이디어를 얻으려면 RFC를 살펴보십시오.

제안서를 받아볼 의향이 있습니까?비록 이 책은 다소 낡았지만, 모리스 바흐의 "유닉스 운영체제 설계"는 훌륭한 책이다.책장에 있는 K&R 옆에 있습니다.

Software Tools(Amazon)의 모든 예제를 사용해 보십시오.대부분은 매우 단순하지만(텍스트의 오른쪽 맞춤, 탭 해제 등), Unix 철학과 기본 C 프로그래밍에 대한 훌륭한 소개입니다.

이거 꽤 흥미롭네요.Unix는 C언어를 사용하여 설계되어 있기 때문에 배우기 어렵지 않을 수 있습니다.Windows OS 를 사용하고 있는 경우는, 「유닉스 용 Windows 서비스」애플리케이션을 사용해 프로그램을 연습할 수 있습니다.Unix 를 사용하고 있는 경우는, vi 와 같은 에디터를 사용할 수 있습니다.

저는 한 가지를 강력히 추천합니다.

ls, mkdir, cd 등 일반적인 Linux 명령줄 도구를 모두 다시 씁니다.

프로그래밍과 Linux에 대한 많은 지식을 동시에 얻을 수 있습니다.

가장 쉬운 명령에서 "time"을 선택하고 더 복잡한 명령까지 수행합니다.

학습 내용을 통합하여 실천하는 가장 좋은 방법입니다.관심 있는 어플리케이션의 종류를 선택하고 개발을 시작합니다(예를 들어 네트워크 클라이언트/서버의 심플한 어플리케이션).

대부분의 Unix API(파일, 소켓 등)를 테스트하여 동작을 확인합니다.예를 들어, 유닉스 프로그래밍 북을 입수해, 그 장에 따라서, 독자적으로 함수를 작성함으로써, 읽는 모든 것을 애플리케이션에 테스트 할 수 있습니다.이렇게 하면 향후 프로젝트에서 사용할 자체 함수 라이브러리를 개발할 수 있습니다.

웹 서버를 씁니다.

  • 멀티 스레드로 해 주세요.

  • 개발한 새로운 스크립트 언어(PHP 등)를 지원하는지 여부

  • 인증된 사용자로부터의 업로드를 허용합니다.

  • 마음에 드는 툴의 플러그 인을 작성합니다(즉, Web 뷰를 제공하기 위해서 SVN과 통합합니다).

언급URL : https://stackoverflow.com/questions/2950256/how-do-i-practice-unix-programming-in-c

반응형