fork()가 구현된 프로그램을 실행해서 ps를 통해 프로세스가 돌아가고 있는 지 확인하면은 확인이 되는데
새 터미널을 열어서 ps를 쳐보면 없네요
왜 그런건가요?
터미널의 개념이 프로세스 보다 큰 개념인가요 ? 터미널의 개념과 연관지어 설명 좀 해주세요 ^^
부탁해용 ^^
ps(1) man을 보면 이런 말이 있네요:
By default, ps selects all processes with the same effective user ID (euid=EUID) as the current user and associated with the same terminal as the invoker.
-- C FAQ: http://www.eskimo.com/~scs/C-faq/top.html Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html Korean Ver: http://cinsk.github.io/cfaqs/
그 아래에는
To see every process on the system using standard syntax: ps -e ps -ef ps -eF ps -ely
와 같은 문구가 있습니다.,
terminal 이라는 것도 결국에는 프로세스입니다.
예를들어 설명드리자면
pid ppid 1 0 0 08:00 ? 00:00:01 /sbin/init 4752 1 0 08:01 ? 00:00:00 /usr/sbin/xinetd -pidfile /var/run/xinetd.pid 5693 5634 0 10:25 pts/0 00:00:00 telnet localhost 5694 4752 0 10:25 ? 00:00:00 in.telnetd: localhost 5695 5694 0 10:25 pts/1 00:00:00 login -h localhost -p 5696 5695 2 10:25 pts/1 00:00:00 -bash 5713 5696 0 10:25 pts/1 00:00:00 ps -ef
telnet으로 terminal 을 열고 프로그램을 실행시켰다면
해당 프로세스의 ppid(부모 프로세스 ID)는 bash쉘이고
이 bash쉘의 ppid는 telnetd 가 되겠죠.
이 telnetd의 ppid는 xinetd 가 되고
xinetd의 ppid는 init가 되는겁니다.
여기서 fork를 호출해준 대상이 부모 ppid 라고 생각하시면되고요,
Dig it.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
ps(1) man을 보면 이런
ps(1) man을 보면 이런 말이 있네요:
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
더불어
그 아래에는
To see every process on the system using standard syntax:
ps -e
ps -ef
ps -eF
ps -ely
와 같은 문구가 있습니다.,
terminal 이라는 것도 결국에는 프로세스입니다.
예를들어 설명드리자면
pid ppid
1 0 0 08:00 ? 00:00:01 /sbin/init
4752 1 0 08:01 ? 00:00:00 /usr/sbin/xinetd -pidfile /var/run/xinetd.pid
5693 5634 0 10:25 pts/0 00:00:00 telnet localhost
5694 4752 0 10:25 ? 00:00:00 in.telnetd: localhost
5695 5694 0 10:25 pts/1 00:00:00 login -h localhost -p
5696 5695 2 10:25 pts/1 00:00:00 -bash
5713 5696 0 10:25 pts/1 00:00:00 ps -ef
telnet으로 terminal 을 열고 프로그램을 실행시켰다면
해당 프로세스의 ppid(부모 프로세스 ID)는 bash쉘이고
이 bash쉘의 ppid는 telnetd 가 되겠죠.
이 telnetd의 ppid는 xinetd 가 되고
xinetd의 ppid는 init가 되는겁니다.
여기서 fork를 호출해준 대상이 부모 ppid 라고 생각하시면되고요,
Dig it.
Dig it.
댓글 달기