리눅스에는 foreground process, background process가 있습니다. foreground process를 백그라운드로 돌게, background process를 foreground로 돌게 바꾸는 방법을 알아봅시다. 먼저, foreground process입니다. sleep 100을 치면, 해당 terminal에서 100초동안 멈춰 있어요. 여기까지 정리해 봅시다. 제가 sleep 100을 터미널 tty1에서 입력하였습니다. 그러면, tty1과 sleep 100을 실행시킨 프로세스는 연결되어 있고, 100초가 지날 때 까지 유저와 커뮤니케이션을 하게 됩니다. 뒤에 &를 붙이면 어떻게 될까요? sleep 100 &을 했는데도, 멈춰 있지 않습니다. sleep 100을 백그라운드로 실행..
Linux 검색 결과
stdio.h에는 rename 함수가 있습니다. 파일 이름을 바꿀 때 쓰는 함수입니다. 이 예제에서는 race condition을 생각하지 않도록 하겠습니다. 제 시스템은 아래와 같습니다. 먼저, rename의 1번째 인자는 oldpath, 2번째 인자는 newpath입니다. 이 예제에서는 old가 a.txt이고, new가 A.txt입니다. 이는, a.txt라는 이름을 가진 파일을 A.txt로 바꾼다는 의미입니다. 성공하면 0을, 실패하면 0이 아닌 값을 돌려줍니다. a.txt에 12345라는 내용을 넣어보겠습니다. echo 12345 > a.txt를 하면 매우 간단하게 됩니다. 다음에, a.txt의 내용을 출력해 봅시다. 그랬더니 12345가 나왔습니다. 이제 제가 만든 프로그램인 re.c를 컴파일해서..
안녕하세요. 이번 시간에는 make의 phony target과 .phony에 대해서 알아봅시다. Makefile에서 이런 것은 흔히 보셨을 거에요. clean 이라는 목표가 있고, 명령어로 rm *.txt를 수행합니다. 그리고 여태까지 이것을 목표 정도로 설명했을 거에요. 이 clean은 action이거나 파일일 수 있습니다. 여기서 하나 반전. 만약에 Makefile이 있는 위치에 clean 이라는 파일이 있으면 어떻게 될까요? clean이라는 파일을 생성했습니다. make clean을 실행했더니, 'clean' is up to date가 뜨게 됩니다. 그러면서 clean이 실행되지 않게 됩니다. 왜 그럴까요? 이 문제는 결론적으로 clean 이라는 파일 때문에 생긴 문제입니다. 그런데, 왜 up to..
리눅스에서 xargs 명령어를 알게 모르게 봤었는데요. 자주 보면서도 대체 왜 쓰는 것인지. 어떻게 동작하는지 잘 몰랐었습니다. 그래서 쓰게 되었습니다. 어떤 명령어인지만 간단하게 알아보겠습니다. 여기에서는 옵션들을 다루지 않습니다. 필요할 때 하나씩 익히도록 하겠습니다. 먼저, xargs는 명령어를 만들고 실행시킨다고 되어 있습니다. stdio로부터. 표준 입력으로부터 읽어서 명령어를 만든 다음에, 해당 명령어를 수행하게끔 한다. 정도로 이해하면 됩니다. 서문만 읽어보면, blank나 개행을 기준으로 토큰을 분리합니다. 그리고 command를 1번 혹은 그 이상 실행시킵니다. 어떤 것이랑 같이? initial arguments랑 같이. 표준 입력으로부터 읽은 것을 가지고 처리를 한다고 되어 있어요. 무..
grep은 키워드나 패턴을 찾는 데 꽤 유용하게 쓰곤 합니다. 특히, grep -rn "keyword" . 꼴은 상당히 강력합니다. keyword를 포함하고 있는 파일을 제 현재 디렉토리에서부터 재귀적으로 찾아주기 때문입니다. 여기서 한 가지 더 질문. 특정 디렉토리를 제외하고 싶습니다. 혹은, 특정한 확장자만 검색 결과에 나오고 싶습니다. 이런 문제 상황들이 생각보다 자주 발생하는데요. 어떻게 하면 되는지 알아보겠습니다. 먼저 --exclude=GLOB입니다. 파일 이름이 pattern에 걸리는 경우 건너 뛴다고 되어 있어요. 그런데, suffix가 match 된다고 합니다. 접두사가 아니라 접미가 걸린다는 의미입니다. --exclude-dir은 파일 이름이 아닌, 폴더를 의미합니다. 폴더의 suffi..
최근댓글