Linux
[펌] PID로 프로세스 정보 알아내기
방법 1: /proc 명령어 cat /proc/프로세스아이디/status | grep Name 실행예시 [root@localhost ~]# cat /proc/25387/status | grep Name Name: tail 변수에 담기 명령어 PROC_NAME=`cat /proc/프로세스아이디/status | grep Name | awk '{print $2}'` 실행예시 [root@localhost ~]# PROC_NAME=`cat /proc/26099/status | grep Name | awk '{print $2}'` [root@localhost ~]# echo $PROC_NAME tail 방법 2: ps 엄밀히 말해 이 방법은 프로세스 이름이 아니라 프로세스 실행명령어를 보여준다. 하지만 이를 통해 ..
리눅스 시스템 에러 - errno
/usr/include/asm/errno.h 참고하였습니다. #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO 5 /* I/O error */ #define ENXIO 6 /* No such device or address */ #define E2BIG 7 /* Arg list too long */ #define ENOEXEC 8 /* Exec format error */ #define EBADF 9 /* Bad fi..
[펌] 쉘과 커널, 내부 명령어와 외부 명령어로 구분한 이유
commdand.com을 쉘 프로그램이라고 합니다. 우리가 도스상에서 내리는 대부분의 명령은 command.com이라는 파일이 처리합니다. 전문가들이 말하는 용어로 command.com 파일은 운영체제의 쉘(Shell) 프로그램이라고 말합니다. 쉘 프로그램은 사용자가 내린 명령을 운영체제가 수행할 수 있도록 명령을 입력받고 이를 컴퓨터의 운영체제에 전달하는 일을 합니다. 다시 말해 사용자가 내린 명령을 운영체제가 수행할 수 있도록 통역해주는 일을 합니다. 운영체제의 핵심은 커널 부분입니다. 그럼 실질적인 운영체제의 핵심은 무엇인가? 커널(kernel)이라고 하는 부분입니다. 도스로 말하면 io.sys와 같은 파일이 이에 해당합니다. 실질적으로 사용자가 내린 명령을 수행하면서 컴퓨터의 하드웨어를 조작하는 ..
[참고용] test 명령어 표현식
( EXPRESSION )EXPRESSION is true! EXPRESSIONEXPRESSION is falseEXPRESSION1 -a EXPRESSION2both EXPRESSION1 and EXPRESSION2 are trueEXPRESSION1 -o EXPRESSION2either EXPRESSION1 or EXPRESSION2 is true-n STRINGthe length of STRING is nonzeroSTRINGequivalent to -n STRING-z STRINGthe length of STRING is zeroSTRING1 = STRING2the strings are equalSTRING1 != STRING2the strings are not equalINTEGER1 -eq I..
[프로세스 관리] 2. 새로운 프로세스 실행
앞에서 프로세스의 PID에 대해서 알아보았는데요, 굉장히 간단하게 getpid() 시스템 콜을 이용해서 자신의 프로세스 ID를 알 수 있었습니다. 이번에는 정말 새로운 프로세스를 생성하는 시스템 콜에 대해 알아보고, 각 차이점에 대해 알아봅시다. 리눅스에서 시스템 콜을 이용하여 프로세스를 실행하면 두가지 방식이 있습니다. 프로그램 바이너리를 메모리에 적재하고 프로세스의 주소공간에 있는 이전 내용을 대체하고 새로운 프로세스를 실행하거나, 부모 프로세스의 주소공간 등을 그대로 복사 한 후 새로운 프로세스를 실행하는 방식입니다. 총 3가지 시스템 콜에 대해서 알아볼텐데요, exec 계열의 시스템 콜, fork 그리고 vfork 까지 알아볼게요. 먼저, exec 시스템 콜에 대해 알아보겠습니다.exec 계열의 ..
[프로세스 관리] 1. 프로세스의 ID 얻기
앞에서 프로세스에 대해서 간단히 설명드렸는데요,그 내용 중에 프로세스를 식별할 수 있는 번호 ! PID를 간단하게 설명했었습니다. 이번 포스팅에서는 자신과 자신의 부모의 PID를 얻어오는 방법에 대해서 알아보겠습니다. 간단합니다. 자신의 PID를 호출하는 getpid() 시스템 콜과 getppid() 시스템 콜을 사용하시면 됩니다. #include #include pid_t getpid(void);pid_t getppid(void); 입력 인자 void 잘라낼 파일의 디스크립터 반환값 pid_t 실패의 경우는 없습니다. 해당 프로세스의 PID값을 반환 굉장히 단순합니다. 그럼 예제를 보시죠! 아래와 같습니다. 자신과 자신의 부모 프로세스의 PID값을 출력해주는 예제입니다. 아래는 해당 프로그램의 출력화면..