본문 바로가기

linux41

입출력 재지정 표준 입력에서 자료를 읽어 적절히 변환한 결과를 표준 출력으로 내보내는 형태의 프로그램을 흔히 필터(filter)라고 부른다. - 입력된 문자들을 모두 대문자로 변화해서 출력하는 간단한예 - upper.c #include #include #include int main() { int ch; while((ch = getchar()) != EOF) { putchar(toupper(ch)); } exit(0); } ---------------------------------------------- 여기서 putchar 함수는 소문자면 대문자로 바꿔 리턴하며 아닌경우 그대로 둔다. 위 예제를 셸의 입 출력 재지정 기능을 이용해서 파일을 대문자로 변환하는 것도 물론 가능하다. $ cat file.txt $ ./u.. 2010. 8. 17.
좀비 프로세스 fork를 이용한 프로세스 생성은 매우 유용하나, 프로그램이 자식 프로세스들을 세심하게 관리해야 한다는 책임이 따른다 자식 프로세스가 종료된다고 해도 부모와의 관계는 부모가 정상적으로 종료되거나 부모가 wait을 호출할 떄까지 유지된다. 즉, 자식 프로세스가 종료되어도 그 즉시 프로세스 테이블에서 자식 프로세스의 해당 항목이 삭제되는 것은 아니다. 자식 프로세스가 더 이상 실행되지 않는다고 해도 부모가 wait를 통해서 자식 프로세스의 종료 코드를 요청할 수 있기 때문에 운영체제는 자식 프로세스를 여전히 시스템 안에 남겨둔다. 실행이 종료되었으나 부모와의 연관 관계가 남아 있는 프로세스를 가리켜 소멸된 프로세스 또는 좀비 프로세스라고 부른다....부모한테 버림받은.자식.. 자식 프로세스가 부모보다 먼저 .. 2010. 8. 17.
프로세스 이미지 복제 동시에 여러 기능을 수행하고자 하 떄에느느 스레드를 사용할 수도ㅛ 있고 init이 하는 것처럼 한 프로그램 안에서 완전히 개별적인 프로세스를 생성할 수 도 있다. 새 프로세스는 fork 함수를 호출해서 생성할 수있다. 이 시스템 호출은 현재 프로세스를 복제해서 프로세스 테이블에 새로운 항목을 생성한다. ( exec처럼 현재 프로세스를 다른 프로세스로 대체 하는것이 아니라). 새 프로세스는 현재 프로세스의 여러 특성을 물려 받는다. 새 프로세스는 원래의 프로세스와 동일 한 코드를 수행 한다. 그러나 자료 공간과 환경, 파일 서술자들은 개별적이다. ---------------------------------------------- #Include #include pid_t fork(void); -------.. 2010. 8. 15.
프로세스 이미지 대체하기 프로세스 생성을 위한 저수준 인터페이스로 exec 가 있다. exec 함수라는 것은 사실 이름이 exec로 시작되는 일단의 함수들을 통칭한 것이다. 이 함수들은 모두 새 프로세스를 띄우는 일을 하되, 프로세스를 띄우는 방식이나 프로그램 인수들을 제공하는 방식은 서로 다르다. exec함수들은 현재 프로세스를 path 또는 file 인수로 지정된 프로그램의 새 프로세스로 대체한다. exec 함수들을 이용하면 현재 프로그램의 실행을 다른 프로그램에게 넘겨 줄 수 있다. 예를 들면 한 프로그램이 사용자의 신원을 점검한 후에 제한된 사용 방침을 가진 다른 어떤 프로그램에게 실행을 넘겨주는 등의 시나리오가 가능하다. exec 함수들의 경우 새 프로그램이 시작된 후에는 원래의 프로그램이 더 이상 실행될 필요가 없다는.. 2010. 8. 15.